Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa Chức năng bạn bè và Lớp bạn bè

Hàm Friend và lớp friend là các kỹ thuật được sử dụng để truy cập các thành viên riêng của một lớp bằng cách sử dụng từ khóa friend. Sự khác biệt chung giữa chức năng bạn bè và lớp bạn bè là khi sử dụng chức năng bạn bè, các thành viên của lớp riêng có thể được truy cập nhưng trong lớp bạn bè, chỉ có tên của lớp bạn được truy cập không phải là thành viên riêng của lớp.

Tính năng kết bạn cho dù được sử dụng bởi hàm hoặc lớp có thể tạo ra tác động tiêu cực đến khung hướng đối tượng vì nó làm suy yếu việc đóng gói chống lại mô hình hướng đối tượng . Đây là lý do tính năng kết bạn phải được sử dụng một cách khôn ngoan nếu không nó có thể phá vỡ việc ẩn dữ liệu của mã.

Tính năng bạn bè này không phải là giao hoán và cũng không phải là bắc cầu . X là bạn của Y không suy luận rằng Y cũng là bạn của X. Nếu X là bạn của Y và Y là bạn của Z, không ngụ ý rằng X là bạn của Z.

Biểu đồ so sánh

Cơ sở để so sánhChức năng kết bạnLớp học bạn bè
Căn bảnĐây là một hàm được sử dụng với một từ khóa bạn bè để cấp quyền truy cập hàm không phải thành viên cho các thành viên riêng của một lớp.Đây là một lớp được sử dụng với một từ khóa bạn bè để truy cập các thành viên riêng của một lớp khác.
Chuyển tiếp khai báoPhải được sử dụng.Không bắt buộc.
Sử dụngMột chức năng kết bạn có thể được sử dụng trong một số trường hợp quá tải toán tử.Một lớp bạn có thể được sử dụng khi một lớp được tạo trên đầu một lớp khác.

Định nghĩa về chức năng kết bạn

Hàm friend được sử dụng để truy cập các thành viên riêng và được bảo vệ của một lớp bằng cách cho phép hàm không phải thành viên có được quyền truy cập. Trong loại hàm này, một từ khóa bạn bè được sử dụng trước tên hàm tại thời điểm khai báo. Có một số điều kiện hạn chế áp dụng cho chức năng kết bạn. Điều kiện đầu tiên là chức năng bạn bè không được kế thừa bởi một lớp con. Điều kiện thứ hai là trình xác định lớp lưu trữ có thể không có trong hàm friend, điều đó có nghĩa là nó không thể được khai báo là tĩnh và extern.

Hàm friend không được gọi với một đối tượng gọi của lớp. Các ví dụ về chức năng kết bạn là: một hàm toàn cục, hàm thành viên của một lớp, mẫu hàm có thể là một hàm bạn bè. Hãy hiểu nó với sự giúp đỡ của một ví dụ.

 #include bằng cách sử dụng không gian tên std; lớp đầu tiên {dữ liệu int; công khai: đầu tiên (int i): data (i) {} friend void display (const first & a); }; void display (const first & a) {cout << "data =" < 

Định nghĩa về lớp bạn

Tương tự như chức năng kết bạn, chúng ta có thể biến một lớp thành bạn của một lớp khác được gọi là lớp bạn . Vì vậy, lớp bạn bè có thể có quyền truy cập vào các thành viên riêng được định nghĩa trong lớp khác. Điều quan trọng cần nhớ là lớp bạn chỉ có thể truy cập các tên được xác định trong lớp khác thay vì kế thừa lớp khác. Chính xác, các thành viên của lớp đầu tiên không thể trở thành thành viên của lớp bạn. Những lớp bạn bè hiếm khi được sử dụng.

Lớp bạn có thể được khai báo trong nhiều hơn một lớp. Nó được coi là một phương pháp thay thế ngắn cho chức năng bạn bè vì với sự trợ giúp của điều này, chúng tôi có thể tạo một lớp bạn có thể truy cập toàn bộ thành viên dữ liệu và chức năng thay vì tạo nhiều chức năng bạn bè.

 #include bằng cách sử dụng không gian tên std; class First {// Khai báo một người bạn lớp bạn bè Lớp thứ hai; công khai: First (): a (0) {} void print () {cout << "Kết quả là" << a << endl; } riêng tư: int a; }; class Thứ hai {công khai: void thay đổi (Đầu tiên & y class, int x) {y class.a = x; }}; int main () // Kết quả Kết quả là 0 Kết quả là 5 

Sự khác biệt chính giữa chức năng bạn bè và lớp bạn bè

  1. Chức năng kết bạn là một chức năng có thể truy cập các thành viên riêng tư và được bảo vệ của một lớp. Ngược lại, một lớp bạn là một lớp giúp truy cập các thành viên riêng của một lớp.
  2. Một hàm friend được khai báo bằng cách đưa nguyên mẫu của nó vào trong lớp, chống lại nó với từ khóa friend. Tương tự, một lớp bạn cũng được định nghĩa bằng cách sử dụng từ khóa friend.
  3. Khai báo chuyển tiếp được sử dụng trong trường hợp chức năng bạn bè chống lại, không cần thiết phải sử dụng nó trong lớp bạn bè.

Phần kết luận

Hàm bạn bè được yêu cầu khi một hàm cần truy cập hai hoặc nhiều lớp độc lập, các thành viên nội bộ. Mặt khác, một lớp bạn là cần thiết khi một lớp yêu cầu truy cập các thành viên của lớp khác. Khi một hàm nhiều thành viên cần phải là một người bạn của hàm đó, trong trường hợp đó, tốt hơn là sử dụng lớp bạn bè.

Top