Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เหตุใด C ++ จึงต้องการตัวดำเนินการแก้ไขขอบเขต


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