Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa Riêng tư và Được bảo vệ trong C ++

Có ba loại bảo vệ truy cập được xác định trong ngôn ngữ lập trình C ++ để ẩn dữ liệu. Ẩn dữ liệu là một phần thiết yếu của lập trình hướng đối tượng. Các từ khóa riêng và được bảo vệ cung cấp mức độ bảo vệ truy cập để ẩn dữ liệu và chức năng trong một lớp. Các thành viên tư nhân không thể được thừa kế trong khi thành viên được bảo vệ có thể được thừa kế nhưng trong một phạm vi hạn chế. Các chỉ định này cho thấy khả năng hiển thị của các thành viên nơi riêng tư bị hạn chế nhiều hơn được bảo vệ.

Biểu đồ so sánh

Cơ sở để so sánhRiêng tưĐược bảo vệ
Kế thừa tài sản cho lớp dẫn xuất
Lớp phái sinh không thể truy cập các thành viên tư nhân lớp cơ sở.Lớp phái sinh có thể truy cập các thành viên được bảo vệ lớp cơ sở.
Khả năng tiếp cận
Các thành viên riêng của lớp không thể truy cập ra khỏi phạm vi lớp.Các thành viên được bảo vệ của lớp không thể truy cập ra khỏi phạm vi lớp ngoại trừ lớp xuất phát ngay lập tức.
Có thể truy cập từ lớp học riêngVângVâng
Có thể truy cập từ lớp dẫn xuấtKhôngVâng
Có thể truy cập từ bên ngoàiKhôngKhông

Định nghĩa của tư nhân

Các thành viên lớp được khai báo là riêng tư chỉ có thể được truy xuất trong lớp. Nói cách khác, các thành viên được khai báo trong phần riêng tư của lớp chỉ có thể được truy cập bởi chức năng bạn bè và chức năng thành viên của lớp. Các thành viên tư nhân không thể truy cập trực tiếp vào lớp dẫn xuất và không thể truy cập ra khỏi phạm vi lớp.

Chương trình C ++ cho thấy khái niệm về các chỉ định truy cập riêng.

 #include bằng cách sử dụng không gian tên std; lớp A {private: int i; công khai: void get () {cout <> i; }}; lớp B: công A {công khai: void show () {i ++; cout << "\ n Số đã nhập của bạn sau khi tăng gia"> # bao gồm sử dụng không gian tên std; class mammal {public: void mammalMethod (void) {cout << "Nó thuộc thể loại động vật có vú." < 

Trong chương trình đã cho ở trên, một đối tượng của lớp con được tạo với tên là ob ob tựa và chức năng thành viên của lớp cha có thể được truy cập thông qua cách gọi phương thức lớp con là Marine Marine_mammalMethod. Mặc dù, phương thức cha mẹ không thể được truy cập trực tiếp với đối tượng.

Định nghĩa của bảo vệ

Các thành viên lớp được khai báo là được bảo vệ trong một lớp chỉ có thể được truy cập thông qua chức năng thành viên và chức năng bạn bè của lớp. Các thành viên được bảo vệ này không thể được truy cập ra khỏi phạm vi lớp ngoại trừ lớp con (ngay lập tức bắt nguồn từ nó). Nó phục vụ mục đích hạn chế trong thừa kế và kế thừa các thuộc tính một cách hạn chế.

Chương trình C ++ được đưa ra dưới đây minh họa khái niệm về các chỉ định truy cập được bảo vệ.

 #include bằng cách sử dụng không gian tên std; class account1 {bảo vệ: int x, y; // có thể truy cập vào lớp dẫn xuất công khai: void set (int a, int b) {x = a; y = b; } void show () {cout < 

Trong ví dụ trên, lớp con kế thừa các thuộc tính của lớp cơ sở vì các thành viên dữ liệu được khai báo là công khai hoặc được bảo vệ. Sẽ không thể nếu x và y được khai báo là riêng tư trong lớp cơ sở.

Sự khác biệt chính giữa riêng tư và được bảo vệ trong C ++

  1. Từ khóa được bảo vệ có thể được sử dụng để xây dựng các thành viên lớp riêng tư với lớp của họ nhưng có thể được kế thừa và sử dụng bởi lớp dẫn xuất. Ngược lại, điều này là không thể trong khi sử dụng private, vì các thành viên riêng không thể được kế thừa trực tiếp vào lớp dẫn xuất.
  2. Khi lớp cơ sở được kế thừa bằng cách sử dụng bộ xác định truy cập riêng, nó làm cho tất cả các thành viên công khai và được bảo vệ của lớp cơ sở, các thành viên riêng của lớp dẫn xuất. Đối với, đây không phải là trường hợp trong các chỉ định truy cập được bảo vệ.

Phần kết luận

Riêng tư và được bảo vệ là các chỉ định truy cập được sử dụng để đặt mức độ hiển thị của lớp và các thành viên của lớp khác nhau. Tuy nhiên, bảo vệ là linh hoạt hơn tư nhân.

Top