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

Tác Giả: Laura McKinney
Ngày Sáng TạO: 1 Tháng Tư 2021
CậP NhậT Ngày Tháng: 6 Có Thể 2024
Anonim
Sự khác biệt giữa Chức năng bạn bè và Lớp bạn bè - Công Nghệ
Sự khác biệt giữa Chức năng bạn bè và Lớp bạn bè - Công Nghệ

NộI Dung


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 bè được truy cập không phải là thành viên riêng của lớp.

Các tính năng bạn bè liệu đượ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 hay không vì nó làm suy yếu đóng gói đó là chống lại hướng đối tượng mô hình. Đây là lý do tính năng bạn bè phải được sử dụng một cách khôn ngoan nếu không nó có thể phá vỡ cá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 Bắc cầu. X là bạn của Y doesn Hướ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.

    1. Biểu đồ so sánh
    2. Định nghĩa
    3. Sự khác biệt chính
    4. Phần kết luận

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 chức năng được sử dụng với một từ khóa bạn bè để cấp quyền truy cập chức năng 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

Các chức năng bạn bè đượ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 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ụ.

#inc loại 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 =" <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 () {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 () Đầu tiên obj1; Obj2 thứ hai; obj1. (); obj2.change (obj1, 5); obj1. (); // Kết quả Kết quả là 0 Kết quả là 5

  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è.