当前位置: 代码迷 >> 综合 >> C++中friend的使用方法
  详细解决方案

C++中friend的使用方法

热度:43   发布时间:2024-02-07 16:04:45.0

1 friend介绍

friend的中文含义是“友元”,用来在类外部使用该类的private和protected成员。例如,定义MyClass类如下所示

class MyClass
{public:MyClass(string name){m_name = name;}private:string m_name;
};

自定义函数ShowName()的定义为

void ShowName(MyClass my)
{cout << my.m_name << endl;
}

因为m_name是MyClass的私有成员变量,在类外部不能访问该变量,所以编译程序时会报错,其出错信息为“error C2248: “MyClass::m_name”: 无法访问 private 成员”。

2 将函数定义为类的友元

可以在MyClass定义中将函数ShowName()定义为友元,这样就可以在函数中访问类的private成员了。

在MyClass类的定义中添加如下代码

friend void ShowName(MyClass my);

以上代码的作用是将ShowName()设置为MyClass的友元,之后程序不会报错了。

使用以下代码调用ShowName()函数

MyClass myclass("Hello");
ShowName(myclass);

将会直接打印出“Hello”信息。

3 注意事项

3.1 必须在类内部使用friend

既然是定义类的友元,因此必须在类的内部来使用friend。在类内部的何处使用friend则没有限制,一般我们在类的起始位置或者结束为止出定义友元。

3.2 定义友元不是函数声明

使用friend将函数定义为类的友元,与函数的声明是两个概念。如果只是定义了类的友元而在该函数声明前又使用了这个函数,此时程序会报错。

3.3 定义友元与函数声明没有先后顺序

在Visual Studio中,可以在函数声明前将其定义为类的友元,也可以在声明之后定义。