好問題!我學到了一些新的研究和實驗。
你是對你的評論,::S(); //Is ::S a nested name specifier <-- Yes, Indeed!
你會來,當你開始創建命名空間來欣賞它。變量在名稱空間中可以具有相同的名稱,並且運算符是區分它們的區別。命名空間就像某種意義上的類,是另一層抽象。我不想讓你感到名字空間。你可能不欣賞嵌套名指定在這個例子......看看這個例子:我用::count
在那裏我可以簡單地使用count
#include <iostream>
using namespace std;
int count(0); // Used for iteration
class outer {
public:
static int count; // counts the number of outer classes
class inner {
public:
static int count; // counts the number of inner classes
};
};
int outer::count(42); // assume there are 42 outer classes
int outer::inner::count(32768); // assume there are 2^15 inner classes
// getting the hang of it?
int main() {
// how do we access these numbers?
//
// using "count = ?" is quite ambiguous since we don't explicitly know which
// count we are referring to.
//
// Nested name specifiers help us out here
cout << ::count << endl; // The iterator value
cout << outer::count << endl; // the number of outer classes instantiated
cout << outer::inner::count << endl; // the number of inner classes instantiated
return 0;
}
通知。 ::count
引用全局名稱空間。
你的情況
所以,既然S()是在全局命名空間(即它是在同一個文件或包含的文件或者它不是由namespace <name_of_namespace> { }
籠罩任何一段代碼聲明,你可以使用new struct ::S
或new struct S
;取其你喜歡。
我剛剛得知這是我很好奇,想回答這個問題,所以如果你有一個更具體的和了解到的答案,請你分享:)
我覺得這個的越多,我越覺得這這不是一個很好的答案。我不知道如何用簡單的術語來解釋它,但仍然是完全正確的... – 2010-11-05 05:54:12
Little Q:'A :: B' - >我可以說'A'是**排位結構**並且同時'A ::'是一個嵌套名稱說明符? – 2012-01-07 16:43:23