không
không
trong đó "không phải là thành viên" đại diện cho bất kì sự tham chiếu nào từ
bên ngoài lớp, ví dụ như là từ
main()
, từ một lớp khác hay từ bất kì hàm nào.
Trong ví dụ của chúng ta, các thành viên được thừa kế bởi
CRectangle
và
CTriangle
cũng tuân theo các quyền truy xuất như đối với lớp cơ sở
CPolygon
:
CPolygon::width
// protected access
CRectangle::width
// protected access
CPolygon::set_values()
// public access
CRectangle::set_values()
// public access
Có điều này vì chúng ta đã thừa kế một lớp từ một lớp khác với quyền truy xuất
public
, hãy nhớ:
class CRectangle: public CPolygon;
từ khoá
public
đại diện cho mức độ bảo về tối thiểu mà các thành viên được
thừa kế của lớp cơ sở (
CPolygon
) phải có được trong lớp mới (
CRectangle
).
Mức độ này đối với các thành viên được thừa kế có thể được thay đổi nếu thay
vì dùng
public
chúng ta sử dụng
protected
hay
private
, ví dụ, giả sử rằng
daughter
là một lớp được thừa kế từ
mother
, chúng định nghĩa như thế này:
class daughter: protected mother;
điều này sẽ thiết lập
protected
là mức độ truy xuất tối thiểu cho các thành viên
của
daughter
được thừa kế từ lớp cơ sở. Có nghĩa là tất cả các thành viên
public
trong
mother
sẽ trở thành
protected
trong
daughter
. Tất nhiên, điều
này không cản trở
daughter
có thể có các thành viên
public
của riêng nó. Mức
độ tối thiểu này chỉ áp dụng cho các thành viên được thừa kế từ
mother
.
Nếu không có mức truy xuất nào được chỉ định,
private
được dùng với các lớp
được tạo ra với từ khoá
class
còn
public
được dùng với các cấu trúc.