Một lớp trong C++ có các phần public, private và protected chứa các thành viên tương ứng.
Các thành viên dữ liệu private không thể truy cập từ bên ngoài lớp. Chúng chỉ có thể được truy cập bởi các hàm thành viên của lớp hoặc hàm bạn (friend functions). Mặc định tất cả các thành viên của lớp là private.
Các thành viên protected trong lớp tương tự như private nhưng chúng có thể được truy cập bởi các lớp dẫn xuất (derived classes) hoặc lớp con, trong khi private thì không.
Chương trình dưới đây minh họa thành viên private và protected trong lớp.
Ví dụ
#include <iostream>
using namespace std;
class Base {
public:
int a = 8;
protected:
int b = 10;
private:
int c = 20;
};
class Derived : public Base {
public:
void func() {
cout << "Giá trị của a: " << a;
cout << "\nGiá trị của b: " << b;
}
};
int main() {
Derived obj;
obj.func();
return 0;
}
Kết quả
Giá trị của a: 8 Giá trị của b: 10
Hãy hiểu chương trình trên.
Trong lớp Base, các thành viên dữ liệu là a, b và c lần lượt là public, protected và private.
class Base {
public:
int a = 8;
protected:
int b = 10;
private:
int c = 20;
};
Lớp Derived kế thừa lớp Base. Hàm func() in giá trị của a và b. Nó không thể in giá trị của c vì c là private của Base và không thể truy cập trong Derived.
class Derived : public Base {
public:
void func() {
cout << "Giá trị của a: " << a;
cout << "\nGiá trị của b: " << b;
}
};
Trong hàm main(), đối tượng obj của lớp Derived được tạo. Sau đó hàm func() được gọi.
int main() {
Derived obj;
obj.func();
return 0;
}