Computer >> Máy Tính >  >> Lập trình >> C ++

Toán tử độ phân giải phạm vi so với con trỏ này trong C ++?

Ở đây chúng ta sẽ xem một số ví dụ C ++ và cố gắng tìm loại đầu ra nào sẽ tạo ra. Sau đó, chúng ta có thể hiểu mục đích và chức năng của toán tử phân giải phạm vi và con trỏ ‘this’ trong C ++.

Nếu một số mã có một số thành viên nói là 'x' và chúng ta muốn sử dụng một hàm khác có đối số có cùng tên là 'x', thì trong hàm đó, nếu chúng ta sử dụng 'x', nó sẽ ẩn biến thành viên, và biến cục bộ sẽ được sử dụng. Hãy để chúng tôi kiểm tra điều này trong một mã.

Ví dụ

#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);
}

Đầu ra

Value of x is: 40

Để truy cập thành viên x của lớp, chúng ta phải sử dụng con trỏ ‘this’. ‘This’ là một loại con trỏ đặc biệt trỏ đến đối tượng hiện tại. Hãy để chúng tôi xem con trỏ ‘this’ giúp thực hiện tác vụ này như thế nào.

Ví dụ

#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);
}

Đầu ra

Value of x is: 10

Trong C ++, có một toán tử khác được gọi là toán tử phân giải phạm vi. Toán tử đó được sử dụng để truy cập thành viên của lớp cha hoặc một số thành viên tĩnh. Nếu chúng tôi sử dụng toán tử phân giải phạm vi cho việc này, nó sẽ không hoạt động. Tương tự, nếu chúng ta sử dụng con trỏ ‘this’ cho thành viên tĩnh, nó sẽ tạo ra một số vấn đề.

Ví dụ

#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);
}

Đầu ra

Value of x is: 50