深刻解析C++編程中規模解析運算符的感化及應用。本站提示廣大學習愛好者:(深刻解析C++編程中規模解析運算符的感化及應用)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻解析C++編程中規模解析運算符的感化及應用正文
規模解析運算符 :: 用於標識和清除在分歧規模內應用的標識符。
語法
:: identifier class-name :: identifier namespace :: identifier enum class :: identifier enum struct :: identifier
備注
identifier 可所以變量、函數或列舉值。
具有定名空間和類
以下示例顯示規模解析運算符若何與定名空間和類一路應用:
namespace NamespaceA{
int x;
class ClassA {
public:
int x;
};
}
int main() {
// A namespace name used to disambiguate
NamespaceA::x = 1;
// A class name used to disambiguate
NamespaceA::ClassA a1;
a1.x = 2;
}
沒有規模限制符的規模解析運算符表現全局定名空間。
namespace NamespaceA{
int x;
}
int x;
int main() {
int x;
// the x in main()
x = 0;
// The x in the global namespace
::x = 1;
// The x in the A namespace
NamespaceA::x = 2;
}
你可使用規模解析運算符來標識定名空間的成員,還可標識經由過程 using 指定成員的定名空間的定名空間。鄙人面的示例中,你可使用 NamespaceC 限制 ClassB(雖然 ClassB 已在 NamespaceB 中聲明),由於已經由過程 using 指令在 NamespaceC 中指定 NamespaceB。
namespace NamespaceB {
class ClassB {
public:
int x;
};
}
namespace NamespaceC{
using namespace B;
}
int main() {
NamespaceB::ClassB c_b;
NamespaceC::ClassB c_c;
c_b.x = 3;
c_c.x = 4;
}
可以使用規模解析運算符鏈。在以下示例中,NamespaceD::NamespaceD1 將標識嵌套的定名空間 NamespaceD1,而且 NamespaceE::ClassE::ClassE1 將標識嵌套的類 ClassE1。
namespace NamespaceD{
namespace NamespaceD1{
int x;
}
}
namespace NamespaceE{
class ClassE{
public:
class ClassE1{
public:
int x;
};
};
}
int main() {
NamespaceD:: NamespaceD1::x = 6;
NamespaceE::ClassE::ClassE1 e1;
e1.x = 7 ;
}
具有靜態成員
必需應用規模解析運算符來挪用類的靜態成員。
class ClassG {
public:
static int get_x() { return x;}
static int x;
};
int ClassG::x = 6;
int main() {
int gx1 = ClassG::x;
int gx2 = ClassG::get_x();
}
具有辨別規模的列舉
辨別規模的解析運算符還可以與辨別規模的列舉列舉聲明的值一路應用,以下例所示:
enum class EnumA{
First,
Second,
Third
};
int main() {
EnumA enum_value = EnumA::First;
}