ตัวดำเนินการ ::(ความละเอียดของขอบเขต) ใช้เพื่อเรียกชื่อที่ซ่อนอยู่เนื่องจากขอบเขตของตัวแปร เพื่อให้คุณยังคงใช้งานได้ ตัวดำเนินการความละเอียดขอบเขตสามารถใช้เป็นทั้ง unary และ binary
คุณสามารถใช้โอเปอเรเตอร์ขอบเขต 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