命名空間和類是C++中的兩個不同的概念。名稱空間僅用於防止名稱衝突,而類是用戶定義的類型。爲什麼命名空間和類在C++中具有相同的語法?
比爲什麼它們使用相同的::
語法?
例如:
namespace::function();
class::function();
命名空間和類是C++中的兩個不同的概念。名稱空間僅用於防止名稱衝突,而類是用戶定義的類型。爲什麼命名空間和類在C++中具有相同的語法?
比爲什麼它們使用相同的::
語法?
例如:
namespace::function();
class::function();
兩種命名空間和類形成scopes。 作用域是一個與名稱空間和類相當一致的概念:有類作用域,C++中有名稱空間作用域(以及其他類型的作用域)。而且由於::
是一個範圍解析運算符,它在命名空間和類以句法相似的方式使用時沒有什麼不尋常之處。
因爲類,就像名稱空間引入了一個(通常命名的)作用域。範圍解析運算符與類和名稱空間的工作方式相同。增加更多的操作員來做同樣的事情是沒有好處的。
如果類沒有引入作用域,就不會有麻煩:
struct buffer {
int size, *data;
};
struct list {
node* head;
int size; // oops, name conflict!
};
顯然,類必須引入作用域爲會員。
我建議你拿起一本關於C++的好書(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)並閱讀涵蓋範圍的章節分辨率運算符('::')。 –
這麼多的反對票嗎?我認爲這是一個有趣的問題,並未在stackoverflow上提出。 – iianfumenchu
的確,這裏的降價似乎過於苛刻。 –