Quyền truy cập
Nếu cần, trong mô tả của cấu trúc, bạn có thể sử dụng các từ khóa đặc biệt, đại diện cho các bộ điều chỉnh quyền truy cập nhằm hạn chế khả năng hiển thị của các trường từ bên ngoài cấu trúc. Có ba bộ điều chỉnh: public
, protected
, và private
. Theo mặc định, tất cả các thành viên của cấu trúc là công khai, điều này tương đương với mục nhập sau (sử dụng cấu trúc Result
làm ví dụ):
struct Result
{
public:
double probability;
double coef[3];
int direction;
string status;
...
};
2
3
4
5
6
7
8
9
Tất cả các thành viên bên dưới bộ điều chỉnh sẽ nhận được quyền truy cập tương ứng cho đến khi gặp một bộ điều chỉnh khác hoặc khối cấu trúc kết thúc. Có thể có nhiều phần với các quyền truy cập khác nhau, tuy nhiên, chúng có thể được sửa đổi tùy ý.
Các thành viên được đánh dấu là protected
chỉ có thể truy cập được từ mã của cấu trúc này và các cấu trúc hậu duệ, tức là假 định rằng chúng phải có các phương thức công khai, nếu không, không ai có thể truy cập vào các trường như vậy.
Các thành viên được đánh dấu là private
chỉ có thể truy cập được từ bên trong mã của cấu trúc. Ví dụ, nếu bạn thêm private
trước trường status
, bạn có thể sẽ cần một phương thức để đọc trạng thái bởi mã bên ngoài (getStatus
).
struct Result
{
public:
double probability;
double coef[3];
int direction;
private:
string status;
public:
string getStatus()
{
return status;
}
...
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sẽ chỉ có thể đặt trạng thái thông qua tham số của hàm tạo thứ hai. Việc truy cập trực tiếp vào trường sẽ dẫn đến lỗi "không có quyền truy cập vào thành viên riêng 'status' của cấu trúc 'Result'":
// lỗi:
// không thể truy cập vào thành viên riêng 'status' được khai báo trong cấu trúc 'Result'
r.status = "message";
2
3
Trong các lớp, quyền truy cập mặc định là private
. Điều này tuân theo nguyên tắc đóng gói, mà chúng ta sẽ đề cập trong Chương về Lớp.