友元函数允许外部函数访问类中的私有或受保护成员,通过在类定义中用 friend 关键字声明。与成员函数不同,友元函数声明在类外部,可访问类的私有和保护成员,而成员函数在类内部声明,可访问类所有成员。友元函数用作普通函数调用,而成员函数用类对象调用,在需要外部访问私有或受保护成员时使用友元函数,在类内部使用成员函数时使用成员函数。
C++ 友元函数详解:友元函数与成员函数的区别
友元函数
友元函数是一种允许外部函数访问类中的私有和保护成员的特殊函数。它通过在类定义中使用
关键字声明。
立即学习
“
C++免费学习笔记(深入)
”;
语法:
C函数速查手册(CHM版)
C函数速查手册(CHM版)
下载
成员函数
成员函数是属于类的函数,可以访问其私有和保护成员。
语法:
友元函数和成员函数的区别
特征友元函数成员函数可访问性可以访问类的私有和保护成员可以访问类的所有成员声明位置在类外部在类内部作用域全局类内部调用方式像普通函数一样调用使用类对象调用
实战案例
考虑一个
类,它具有私有的
成员:
我们可以使用友元函数
来计算学生的平均成绩,该函数可以访问
:
我们也可以使用成员函数来计算平均成绩,但它只能在
类中使用:
结论
友元函数提供了一种机制,允许外部函数访问类的私有和保护成员,而不需要使这些成员对外部世界可见。成员函数可以访问类的所有成员,但只能在类内部使用。
friendclass MyClass {
friend void myFriendFunction();
...
};class MyClass {
void myMemberFunction();
...
};Studentmarksclass Student {
private:
int marks;
...
};calculateAverage()marks// 友元函数
friend double calculateAverage(Student& student);
// 计算学生的平均成绩
double calculateAverage(Student& student) {
return student.marks / 3;
}Student// 类的成员函数
double getAverage() {
return marks / 3;
}