Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các công cụ sửa đổi truy cập cho các lớp C ++ với sự trợ giúp của các ví dụ. Các công cụ sửa đổi quyền truy cập của C ++ là công khai, riêng tư và được bảo vệ.
Một trong những tính năng chính của ngôn ngữ lập trình hướng đối tượng như C ++ là ẩn dữ liệu .
Ẩn dữ liệu đề cập đến việc hạn chế quyền truy cập vào các thành viên dữ liệu của một lớp. Điều này là để ngăn các hàm và lớp khác giả mạo dữ liệu của lớp.
Tuy nhiên, điều quan trọng là làm cho một số chức năng thành viên và dữ liệu thành viên có thể truy cập được để dữ liệu ẩn có thể bị thao túng một cách gián tiếp.
Các công cụ sửa đổi quyền truy cập của C ++ cho phép chúng ta xác định thành viên lớp nào có thể truy cập vào các lớp và hàm khác, và thành viên nào không.
Ví dụ,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Ở đây, các biến số bệnh nhân và chẩn đoán của Patient
lớp được ẩn bằng cách sử dụng private
từ khóa, trong khi các hàm thành viên được thực hiện bằng cách sử dụng public
từ khóa.
Các loại bổ trợ truy cập C ++
Trong C ++, có 3 công cụ sửa đổi quyền truy cập:
public
private
protected
Công cụ sửa đổi quyền truy cập công cộng
- Các
public
từ khóa được sử dụng để tạo ra các thành viên cộng đồng (dữ liệu và chức năng). - Các thành viên công cộng có thể truy cập từ bất kỳ phần nào của chương trình.
Ví dụ 1: Công cụ sửa đổi truy cập công cộng của C ++
#include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )
Đầu ra:
Nhập tuổi của bạn: 20 Tuổi = 20
Trong chương trình này, chúng tôi đã tạo một lớp có tên Sample
, chứa một public
biến tuổi và một public
hàm displayAge()
.
Trong main()
, chúng ta đã tạo một đối tượng của Sample
lớp có tên là obj1. Sau đó, chúng tôi truy cập trực tiếp các phần tử công khai bằng cách sử dụng các mã obj.age
và obj.displayAge()
.
Công cụ sửa đổi quyền truy cập riêng tư
- Các
private
từ khóa được sử dụng để tạo ra các thành viên tin (dữ liệu và chức năng). - Các thành viên riêng tư chỉ có thể được truy cập từ trong lớp.
- Tuy nhiên, các lớp bạn bè và chức năng bạn bè có thể truy cập các thành viên riêng tư.
Ví dụ 2: Bộ định nghĩa truy cập riêng tư trong C ++
#include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )
Đầu ra:
Nhập tuổi của bạn: 20 Tuổi = 20
Trong main()
, đối tượng obj1 không thể truy cập trực tiếp vào tuổi của biến lớp.
// error cin>> obj1.age;
Chúng ta chỉ có thể thao tác gián tiếp age thông qua hàm public displayAge()
, vì hàm này gán age cho đối số được truyền vào nó tức là tham số hàm int a
.
Công cụ sửa đổi quyền truy cập được bảo vệ
Trước khi chúng ta tìm hiểu về công protected
cụ xác định quyền truy cập, hãy đảm bảo rằng bạn biết về kế thừa trong C ++.
- Các
protected
từ khóa được sử dụng để tạo ra các thành viên được bảo vệ (dữ liệu và chức năng). - Các thành viên được bảo vệ có thể được truy cập trong lớp và từ lớp dẫn xuất.
Ví dụ 3: Bộ định nghĩa truy cập được bảo vệ bằng C ++
#include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )
Đầu ra:
Nhập tuổi của bạn: 20 Tuổi = 20
Đây, ChildSample
là một lớp kế thừa có nguồn gốc từ Sample
. Độ tuổi biến được khai báo Sample
bằng protected
từ khóa.
Điều này có nghĩa là ChildSample
có thể truy cập age vì Sample
là lớp cha của nó.
Chúng tôi thấy điều này vì chúng tôi đã gán giá trị của tuổi ChildSample
mặc dù tuổi được khai báo trong Sample
lớp.
Tóm tắt: công khai, riêng tư và được bảo vệ
public
các phần tử có thể được truy cập bởi tất cả các lớp và hàm khác.private
các phần tử không thể được truy cập bên ngoài lớp mà chúng được khai báo, ngoại trừfriend
các lớp và hàm.protected
các phần tử giống nhưprivate
, ngoại trừ chúng có thể được truy cập bởi các lớp dẫn xuất.
Các chỉ định | Cùng lớp | Lớp có nguồn gốc | Bên ngoài lớp học |
---|---|---|---|
public | Đúng | Đúng | Đúng |
private | Đúng | Không | Không |
protected | Đúng | Đúng | Không |
Lưu ý: Theo mặc định, các thành viên lớp trong C ++ là private
, trừ khi được chỉ định khác.