Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Toán tử phạm vi (Scope Resolution) vs con trỏ this trong C++

Toán tử phạm vi (Scope Resolution Operator) dùng để truy cập thành viên tĩnh hoặc của lớp, trong khi con trỏ this dùng để truy cập thành viên của đối tượng khi có biến cục bộ trùng tên.

Toán tử phạm vi

Ví dụ

#include<iostream>
using namespace std;

class AB {
  static int x;
public:
  // Tham số cục bộ 'x' che thành viên lớp
  // 'x', nhưng ta có thể truy cập bằng ::.
  void print(int x) {
    cout << "the number is: " << AB::x;
  }
};

// thành viên tĩnh phải định nghĩa tường minh như sau trong C++
int AB::x = 7;

int main() {
  AB ob;
  int m = 6;
  ob.print(m);
  return 0;
}

Kết quả

the number is: 7

Con trỏ this

Ví dụ

#include<iostream>
using namespace std;

class AB {
  int x;
public:
  AB() {
    x = 6;
  }
  // Tham số cục bộ 'x' che thành viên đối tượng
  // 'x', ta truy cập bằng this.
  void print(int x) {
    cout << "the number is: " << this->x;
  }
};

int main() {
  AB ob;
  int m = 7;
  ob.print(m);
  return 0;
}

Kết quả

the number is: 6