LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 148|回复: 0

友元函数

[复制链接]
发表于 2024-2-2 23:13:01 | 显示全部楼层 |阅读模式
friend 函数是一个不为类成员的函数,但它可以访问类的私有和受保护的成员。 友元函数不被视为类成员;它们是获得了特殊访问权限的普通外部函数。 友元不在类的范围内,除非它们是另一个类的成员,否则不会使用成员选择运算符(. 和 ->)调用它们。 friend 函数由授予访问权限的类声明。 可将 friend 声明放置在类声明中的任何位置。 它不受访问控制关键字的影响。

以下示例显示 Point 类和友元函数 ChangePrivate。 friend 函数可以访问其接受为参数的 Point 对象的私有数据成员。

C++

复制
// friend_functions.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
class Point
{
    friend void ChangePrivate( Point & );
public:
    Point( void ) : m_i(0) {}
    void PrintPrivate( void ){cout << m_i << endl; }

private:
    int m_i;
};

void ChangePrivate ( Point &i ) { i.m_i++; }

int main()
{
   Point sPoint;
   sPoint.PrintPrivate();
   ChangePrivate(sPoint);
   sPoint.PrintPrivate();
// Output: 0
           1
}

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表