友元函数与友元类

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(); 
}

 

posted @ 2021-04-10 17:30  lypbendlf  阅读(120)  评论(0编辑  收藏  举报