C++ 友元函数详解:友元函数和全局函数的区别?

友元函数可访问类私有和受保护数据成员,而全局函数不行,友元函数在类声明中声明,全局函数在类外声明,使用 friend 关键字声明友元函数,用 extern 关键字声明全局函数。友元函数通过声明方式获得访问类成员变量的权限,如通过声明一个友元函数 getprivatedata 可以访问 myclass 类私有变量 x。

C++ 友元函数详解:友元函数和全局函数的区别?

C++ 友元函数详解

友元函数和全局函数的区别

在 C++ 中,友元函数是一种特殊的函数,它可以访问类成员函数中声明的私有和受保护的数据成员。相比之下,全局函数在类外声明,无法访问私有和受保护的数据成员。

立即学习“C++免费学习笔记(深入)”;

友元函数的语法

友元函数的语法如下:

friend 返回类型 函数名(参数列表);

例如,声明一个可以访问 MyClass 中私有数据成员的友元函数:

friend int getPrivateData(MyClass& object);

友元函数和全局函数的区别

友元函数和全局函数的主要区别如下:

访问范围:友元函数可以访问类中的私有和受保护的数据成员,而全局函数不能。作用域友元函数可以在类的声明中声明,而全局函数在类外声明。声明方式:友元函数使用 friend 关键字声明,而全局函数使用 extern 关键字声明。

实战案例

考虑一个包含私有成员变量 xMyClass 类:

class MyClass {private:    int x;public:    int getX();    void setX(int value);};

要访问 MyClass 的私有数据成员 x,我们可以声明一个友元函数:

friend int getPrivateData(MyClass& object) {    return object.x;}

使用友元函数

我们可以使用友元函数来访问 MyClass 的私有数据成员:

int main() {    MyClass object;    object.setX(10);    int privateData = getPrivateData(object);    cout << "Private data: " << privateData << endl;    return 0;}

运行此代码将输出:

Private data: 10

以上就是C++ 友元函数详解:友元函数和全局函数的区别?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1448580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月18日 01:37:49
下一篇 2025年12月18日 01:37:58

相关推荐

发表回复

登录后才能评论
关注微信