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

ตัวดำเนินการความละเอียดขอบเขตกับตัวชี้นี้ใน C ++ หรือไม่


ที่นี่เราจะดูตัวอย่าง C ++ และพยายามรับว่าจะสร้างเอาต์พุตประเภทใด จากนั้นเราจะเข้าใจวัตถุประสงค์และหน้าที่ของตัวดำเนินการความละเอียดขอบเขตและตัวชี้ "นี่" ใน C++

หากโค้ดบางตัวมีสมาชิกบางคนพูดว่า 'x' และเราต้องการใช้ฟังก์ชันอื่นที่มีอาร์กิวเมนต์ชื่อ 'x' เหมือนกัน ดังนั้นในฟังก์ชันนั้น หากเราใช้ 'x' มันจะซ่อนตัวแปรสมาชิก และ ตัวแปรท้องถิ่นจะถูกใช้ ให้เราตรวจสอบสิ่งนี้ในรหัสเดียว

ตัวอย่าง

#include <iostream>
using namespace std;
class MyClass {
   private:
      int x;
   public:
      MyClass(int y) {
         x = y;
      }
   void myFunction(int x) {
      cout << "Value of x is: " << x;
   }
};
main() {
   MyClass ob1(10);
   ob1.myFunction(40);
}

ผลลัพธ์

Value of x is: 40

ในการเข้าถึงสมาชิก x ของชั้นเรียน เราต้องใช้ตัวชี้ 'นี้' 'this' คือตัวชี้แบบพิเศษที่ชี้ไปที่วัตถุปัจจุบัน มาดูกันว่าตัวชี้ "นี่" ช่วยทำงานนี้ได้อย่างไร

ตัวอย่าง

#include <iostream>
using namespace std;
class MyClass {
   private:
      int x;
   public:
      MyClass(int y) {
         x = y;
      }
   void myFunction(int x) {
      cout << "Value of x is: " << this->x;
   }
};
main() {
   MyClass ob1(10);
   ob1.myFunction(40);
}

ผลลัพธ์

Value of x is: 10

ใน C ++ มีตัวดำเนินการอื่นที่เรียกว่าตัวดำเนินการแก้ไขขอบเขต โอเปอเรเตอร์นั้นใช้เพื่อเข้าถึงสมาชิกของคลาสพาเรนต์หรือสมาชิกสแตติกบางตัว หากเราใช้ตัวดำเนินการแก้ไขขอบเขตสำหรับสิ่งนี้ มันจะไม่ทำงาน ในทำนองเดียวกัน หากเราใช้ตัวชี้ 'นี้' สำหรับสมาชิกแบบคงที่ มันจะสร้างปัญหาบางอย่าง

ตัวอย่าง

#include <iostream>
using namespace std;
class MyClass {
   static int x;
   public:
      void myFunction(int x) {
         cout << "Value of x is: " << MyClass::x;
      }
};
int MyClass::x = 50;
main() {
   MyClass ob1;
   ob1.myFunction(40);
}

ผลลัพธ์

Value of x is: 50