友元函数是C++中允许非成员函数访问类私有和保护成员的机制。它在类内用friend关键字声明,定义在类外,可直接访问类的所有成员,但不具有传递性和继承性,常用于运算符重载等场景。

友元函数是C++中一种特殊的机制,它允许一个非成员函数访问类的私有(private)和保护(protected)成员。正常情况下,类的私有成员只能被该类的成员函数访问,而外部函数或其它类无法直接读取或修改它们。但通过将某个函数声明为类的“友元”,就可以打破这一限制。
友元函数不是类的成员函数,但它被授予了访问类中所有成员(包括 private 和 protected 成员)的权限。在类内部使用关键字 friend 来声明一个友元函数。
关键点:
在类内用 friend 关键字声明一个函数,然后在类外定义这个函数。下面是一个简单示例:
立即学习“C++免费学习笔记(深入)”;
#include <iostream><br>using namespace std;<br><br>class Box {<br>private:<br> double width;<br>public:<br> Box(double w) : width(w) {}<br> // 声明友元函数<br> friend void printWidth(Box box);<br>};<br><br>// 友元函数定义<br>void printWidth(Box box) {<br> cout << "Width of box: " << box.width << endl; // 直接访问私有成员<br>}<br><br>int main() {<br> Box b(10.5);<br> printWidth(b); // 输出:Width of box: 10.5<br> return 0;<br>}
在这个例子中,printWidth() 不是 Box 类的成员函数,但由于被声明为友元,它可以访问 width 这个私有成员。
友元函数在实际开发中有几个典型应用场景:
例如,重载输出操作符:
class Student {<br>private:<br> string name;<br> int age;<br>public:<br> Student(string n, int a) : name(n), age(a) {}<br> friend ostream& operator<<(ostream& os, const Student& s);<br>};<br><br>ostream& operator<<(ostream& os, const Student& s) {<br> os << "Name: " << s.name << ", Age: " << s.age;<br> return os;<br>}
虽然友元函数提供了便利,但也应谨慎使用:
基本上就这些。友元函数是一个有力的工具,在需要跨类访问或简化接口设计时非常有用,但要避免滥用,保持良好的面向对象设计原则。
以上就是c++++中的友元函数是什么_c++友元函数使用解析的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号