Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

범위 확인 연산자 대 C++의 이 포인터?

<시간/>

여기에서 몇 가지 C++ 예제를 보고 어떤 유형의 출력이 생성되는지 알아보겠습니다. 그러면 C++에서 범위 확인 연산자와 'this' 포인터의 목적과 기능을 이해할 수 있습니다.

일부 코드에 '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' 포인터를 사용해야 합니다. 'this'는 현재 객체를 가리키는 특별한 유형의 포인터입니다. '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++에는 범위 확인 연산자라는 또 다른 연산자가 있습니다. 해당 연산자는 상위 클래스의 멤버 또는 일부 정적 멤버에 액세스하는 데 사용됩니다. 이를 위해 범위 확인 연산자를 사용하면 작동하지 않습니다. 마찬가지로 정적 멤버에 대해 'this' 포인터를 사용하면 몇 가지 문제가 발생합니다.

예시

#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