บทนำ
ออเปอเรเตอร์ :: (scope resolution) ใช้เพื่อเข้าถึงชื่อที่ถูกซ่อนไว้เนื่องจาก variable scopes ทำให้ยังใช้งานได้ สามารถใช้ได้ทั้งแบบ unary และ binary
Unary Scope Operator
ใช้เมื่อ namespace scope หรือ global scope name ถูกซ่อนโดยการประกาศชื่อเดียวกันใน block หรือ class
ตัวอย่าง: Global vs Local Variable
#include <iostream>
using namespace std;
int my_var = 0; // global
int main() {
int my_var = 0; // local ซ่อน global
::my_var = 1; // set global my_var = 1
my_var = 2; // set local my_var = 2
cout << ::my_var << ", " << my_var;
return 0;
}
ผลลัพธ์
1, 2
การประกาศ my_var ใน main ซ่อน global my_var คำสั่ง ::my_var = 1 เข้าถึงตัวแปร global
Binary Scope Operator
ใช้เข้าถึง class names หรือ class member names ที่ถูกซ่อน
ตัวอย่าง: Static Member
#include <iostream>
using namespace std;
class X {
public:
static int count;
};
int X::count = 10; // define static data member
int main() {
int X = 0; // ซ่อน class type X
cout << X::count << endl; // ใช้ static member ของ class X
return 0;
}
ผลลัพธ์
10