ตัวดำเนินการ ::(ความละเอียดของขอบเขต) ใช้เพื่อเรียกชื่อที่ซ่อนอยู่เนื่องจากขอบเขตของตัวแปร เพื่อให้คุณยังคงใช้งานได้ ตัวดำเนินการแก้ไขขอบเขตสามารถใช้เป็นทั้งแบบ unary และแบบไบนารี คุณสามารถใช้ตัวดำเนินการขอบเขต unary ถ้าขอบเขตเนมสเปซหรือชื่อขอบเขตส่วนกลางถูกซ่อนโดยการประกาศชื่อที่เทียบเท่ากันระหว่างบล็อกหรือคลาส ตัวอย่างเช่น หากคุณมีตัวแปรส่วนกลางของชื่อ my_var และตัวแปรในเครื่องของชื่อ my_var เพื่อเข้าถึง my_var ส่วนกลาง คุณจะต้องใช้ตัวดำเนินการแก้ไขขอบเขต
ตัวอย่าง
#include <iostream>
using namespace std;
int my_var = 0;
int main(void) {
int my_var = 0;
::my_var = 1; // set global my_var to 1
my_var = 2; // set local my_var to 2
cout << ::my_var << ", " << my_var;
return 0;
} ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
1, 2
การประกาศ my_var ที่ประกาศในฟังก์ชันหลักจะซ่อนจำนวนเต็มที่ชื่อ my_var ที่ประกาศไว้ในขอบเขตเนมสเปซส่วนกลาง คำสั่ง ::my_var =1 เข้าถึงตัวแปรชื่อ my_var ที่ประกาศไว้ในขอบเขตเนมสเปซส่วนกลาง
คุณยังสามารถใช้ตัวดำเนินการแก้ไขขอบเขตเพื่อใช้ชื่อคลาสหรือชื่อสมาชิกคลาส หากชื่อสมาชิกคลาสถูกซ่อน คุณสามารถใช้ชื่อนั้นโดยนำหน้าชื่อคลาสและตัวดำเนินการขอบเขตคลาส ตัวอย่างเช่น
ตัวอย่าง
#include <iostream>
using namespace std;
class X {
public:
static int count;
};
int X::count = 10; // define static data member
int main () {
int X = 0; // hides class type X
cout << X::count << endl; // use static member of class X
} ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
10