Công cụ sửa đổi quyền truy cập C ++

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 Patientlớp được ẩn bằng cách sử dụng privatetừ khóa, trong khi các hàm thành viên được thực hiện bằng cách sử dụng publictừ 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 publictừ 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 publicbiến tuổi và một publichàm displayAge().

Trong main(), chúng ta đã tạo một đối tượng của Samplelớ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.ageobj.displayAge().

Công cụ sửa đổi quyền truy cập riêng tư

  • Các privatetừ 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 protectedcụ 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 protectedtừ 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, ChildSamplelà một lớp kế thừa có nguồn gốc từ Sample. Độ tuổi biến được khai báo Samplebằng protectedtừ khóa.

Điều này có nghĩa là ChildSamplecó thể truy cập age vì Samplelà 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 ChildSamplemặc dù tuổi được khai báo trong Samplelớ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.
  • privatecá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ừ friendcác lớp và hàm.
  • protectedcá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.

thú vị bài viết...