Computer >> Máy Tính >  >> Lập trình >> C ++

Bạn sẽ so sánh không gian tên trong Python và C ++ như thế nào?


Không gian tên trong Python và C ++ thực sự không thể so sánh được. Ví dụ, trong C ++ -

// a.h
namespace ns {
    struct A { .. };
    struct B { .. };
}

Nếu chúng tôi phải làm điều này -

#include "a.h"
using ns::A;

Điểm của mã đó là có thể viết A không đủ tiêu chuẩn (tức là không cần phải viết ns ::A). Bây giờ, bạn có thể coi một python tương đương như -

from a import A

Nhưng bất kể việc sử dụng như thế nào, toàn bộ tiêu đề a.h vẫn sẽ được bao gồm và biên dịch, vì vậy chúng ta vẫn có thể viết ns ::B, trong khi trong phiên bản Python, a.B sẽ không hiển thị. Phiên bản C ++ khác,

using namespace ns;

cũng không có tương tự Python. Nó mang lại tất cả các tên từ không gian tên ns trong toàn bộ cơ sở mã - và không gian tên có thể được sử dụng lại. Ví dụ,

#include <vector>
#include <map>
#include <algorithm>
using namespace std; // bring in EVERYTHING

Một dòng tương đương với -

from vector import *
from map import *
from algorithm import *

ít nhất là trong những gì nó làm, nhưng sau đó nó chỉ thực sự mang lại những gì trong không gian tên std - mà không nhất thiết phải là tất cả mọi thứ.