1.概念
当一个函数或类被声明为另一个类的友元时,表示它可以直接访问private私有变量,避免成员函数的频繁调用,提高运行效率,但破坏了封装性。
友元是单向的,不能被继承,且不具有传递性。一个函数可以是多个类的友元函数。
2.例子
转自:https://blog.csdn.net/fanyun_01/article/details/79122916
友元类:
class A { … public: friend class B; … };
友元函数:
#include <iostream> using namespace std; class Internet { public: Internet(char *name,char *address) // 改为:internet(const char *name , const char *address) { strcpy(Internet::name,name); strcpy(Internet::address,address); } friend void ShowN(Internet &obj); //友元函数的声明 public: // 改为:private char name[20]; char address[20]; }; void ShowN(Internet &obj) //类外普通函数定义,访问a对象的保护成员name,不能写成,void Internet::ShowN(Internet &obj) { cout<<obj.name<<endl; //可访问internet类中的成员 } void main() { Internet a("谷歌","http://www.google.cn/";); ShowN(a); cin.get(); }