Hàm Friend trong C++ là gì?
Hàm friend trong C++ được định nghĩa bên ngoài phạm vi của lớp. Nó có quyền truy cập tất cả các thành viên được bảo vệ và các thành viên riêng tư của lớp. Bạn bè không phải là hàm thành viên, nhưng các nguyên mẫu cho hàm bạn bè chỉ xuất hiện trong hàm lớp. Nó bao gồm khuôn mẫu lớp, lớp, khuôn mẫu chức năng, chức năng và các hàm thành viên, trong đó toàn bộ thành viên của lớp là bạn bè.
Cú pháp hàm Friend trong C++
Bạn có thể khai báo hàm friend bằng cách sử dụng từ khóa “friend” bên trong phần thân của lớp.
hộp lớp {
chiều rộng gấp đôi;
công cộng:
chiều dài gấp đôi;
bạn void printWidth(Hộp hộp);
void setWidth (gấp đôi chiều rộng);
} ;
Đặc điểm của hàm Friend trong C++
- Hàm friend được gọi như một hàm thông thường mà không sử dụng đối tượng và được khai báo ở phần công khai hoặc riêng tư.
- Nó không nằm trong phạm vi lớp khai báo nó là bạn.
- Nó phải sử dụng tên đối tượng và toán tử thành viên dấu chấm với tên thành viên để truy cập tên thành viên.
Ưu điểm của hàm Friend trong C++
- Chức năng kết bạn cho phép lập trình viên tạo mã hiệu quả hơn.
- Nó cho phép chia sẻ thông tin lớp riêng bởi một chức năng không phải thành viên.
- Nó truy cập các thành viên không công khai của một lớp một cách dễ dàng.
- Nó được sử dụng rộng rãi trong trường hợp hai hoặc nhiều lớp chứa các thành viên có liên quan với nhau so với các phần khác của chương trình.
- Nó cho phép chức năng bổ sung mà lớp không sử dụng phổ biến.
Làm cách nào để khai báo Hàm kết bạn trong C++?
Tất cả các thành viên của lớp bạn trở thành các hàm bạn khi một lớp được khai báo là lớp bạn. Bạn có thể hiển thị hàm friend trong C++ theo các cách sau:
Lớp tên_lớp
{
Friend data_type function_name(argument/s);
};
Một phương thức khai báo khác có thể là:
lớp họcB;
lớp lớpA {
// ClassB là lớp bạn của ClassA
lớp bạn ClassB;
……
}
lớp lớpB {
……
}
Các thành viên của lớp A có thể được truy cập từ lớp B. Các thành viên của lớp B không thể được truy cập từ bên trong lớp A.
Ví dụ về hàm Friend trong C++
Ví dụ 1:
Chương trình đơn giản hiển thị hoạt động của hàm friend:
#include <iostream>
sử dụng không gian tên std;
lớp Khoảng cách {
riêng tư:
int mét;
// hàm bạn bè
bạn int addFive(Khoảng cách);
công cộng:
Khoảng cách() : mét(0) {}
};
// định nghĩa hàm friend
int addFive(Khoảng cách d) {
// truy cập các thành viên private từ hàm friend
d.mét += 5;
trở lại d.mét;
}
int main() {
Khoảng cách D;
cout << “Khoảng cách: ” << addFive(D);
trả về 0;
}
Đầu ra:
Ví dụ 2:
Thêm thành viên của hai lớp khác nhau bằng hàm friend:
#include <iostream>
sử dụng không gian tên std;
// khai báo chuyển tiếp
lớp ClassB;
lớp LớpA {
công cộng:
// constructor khởi tạo numA thành 12
LớpA() : số(12) {}
riêng tư:
int số;
//khai báo hàm friend
bạn int add(ClassA, ClassB);
};
lớp LớpB {
công cộng:
// hàm tạo để khởi tạo numB thành 1
LớpB() : numB(1) {}
riêng tư:
số nguyênB;
//khai báo hàm friend
bạn int add(ClassA, ClassB);
};
// truy cập các thành viên của cả hai lớp
int add(đối tượng ClassAA, đối tượng ClassBB) {
trả về (đối tượngA.numA + đối tượngB.numB);
}
int main() {
Đối tượng lớpA;
Đối tượng lớpB;
cout << “Tổng: ” << add(objectA, objectB);
trả về 0;
}