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

Công dụng của toán tử giải quyết phạm vi (::) trong C++

Toán tử :: (scope resolution) được dùng để truy cập các tên bị che khuất do phạm vi biến để vẫn có thể sử dụng chúng. Toán tử giải quyết phạm vi có thể dùng như cả đơn ngôi (unary) và nhị phân (binary).

Bạn có thể dùng toán tử đơn ngôi nếu tên phạm vi namespace hoặc toàn cục bị che khuất bởi khai báo trùng tên trong một khối hoặc lớp. Ví dụ, nếu bạn có biến toàn cục tên my_var và biến cục bộ cũng tên my_var, để truy cập my_var toàn cục, bạn cần dùng toán tử giải quyết phạm vi:

Ví dụ

#include <iostream>
using namespace std;
int my_var = 0;
int main(void) {
    int my_var = 0;
    ::my_var = 1;  // đặt my_var toàn cục = 1
    my_var = 2;    // đặt my_var cục bộ = 2
    cout << ::my_var << ", " << my_var;
    return 0;
}

Kết quả

1, 2

Khai báo my_var trong hàm main che khuất biến nguyên my_var khai báo ở phạm vi namespace toàn cục. Câu lệnh ::my_var = 1 truy cập biến my_var khai báo ở phạm vi namespace toàn cục.

Bạn cũng có thể dùng toán tử giải quyết phạm vi để dùng tên lớp hoặc tên thành viên lớp. Nếu tên thành viên lớp bị che khuất, bạn có thể dùng nó bằng cách thêm tiền tố tên lớp và toán tử phạm vi lớp. Ví dụ:

Ví dụ

#include <iostream>
using namespace std;
class X {
public:
    static int count;
};
int X::count = 10;  // định nghĩa thành viên dữ liệu static
int main() {
    int X = 0;  // che khuất kiểu lớp X
    cout << X::count << endl;  // dùng thành viên static của lớp X
}

Kết quả

10