友元函数允许外部函数访问类中的私有或受保护成员,通过在类定义中用 friend 关键字声明。与成员函数不同,友元函数声明在类外部,可访问类的私有和保护成员,而成员函数在类内部声明,可访问类所有成员。友元函数用作普通函数调用,而成员函数用类对象调用,在需要外部访问私有或受保护成员时使用友元函数,在类内部使用成员函数时使用成员函数。

C++ 友元函数详解:友元函数与成员函数的区别
友元函数
友元函数是一种允许外部函数访问类中的私有和保护成员的特殊函数。它通过在类定义中使用 friend 关键字声明。
立即学习“C++免费学习笔记(深入)”;
语法:
本文档主要讲述的是OpenGL函数介绍;开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。它采用C语言风格,提供大量的函数来进行图形的处理和显示。OpenGL图形库一共有100多个函数,它们分别属于OpenGL的基本库、实用库、辅助库等不同的库。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
0
class MyClass {
friend void myFriendFunction();
...
};成员函数
成员函数是属于类的函数,可以访问其私有和保护成员。
语法:
class MyClass {
void myMemberFunction();
...
};友元函数和成员函数的区别
| 特征 | 友元函数 | 成员函数 |
|---|---|---|
| 可访问性 | 可以访问类的私有和保护成员 | 可以访问类的所有成员 |
| 声明位置 | 在类外部 | 在类内部 |
| 作用域 | 全局 | 类内部 |
| 调用方式 | 像普通函数一样调用 | 使用类对象调用 |
实战案例
考虑一个 Student 类,它具有私有的 marks 成员:
class 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;
}结论
友元函数提供了一种机制,允许外部函数访问类的私有和保护成员,而不需要使这些成员对外部世界可见。成员函数可以访问类的所有成员,但只能在类内部使用。
以上就是C++ 友元函数详解:友元函数和成员函数的区别?的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号