在C++中关于友元函数的进一步理解-创新互联
这里重新将类的成员函数的定义看一下:
创新互联公司成立于2013年,是专业互联网技术服务公司,拥有项目网站制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元平顺做网站,已为上家服务,为平顺各地企业和个人服务,联系电话:13518219792百科上的认识:
类的成员函数的原型要写在类体中,原型说明了函数的参数表和返回值类型。而函数的定义一般在类外面,也可以直接在类内部定义。前者与普通函数不同的是,实现成员函数时要指明类的名称,具体形式为:
- 返回值类型 类名 :函数成员名(参数表){函数体};
- 而后者一般为一些短小的函数(5行以内),也就是内联函数。
这里在百科上对友元函数的解释:
友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。
1.为什么要使用友元函数
优点:能够提高效率,表达简单、清晰。
也有缺点:破坏了程序的封装性。有时候不到万不得已的时候才使用。
代码解释:
#include#include using namespace std; class ca { string id; void setId(string s) { id = s; } protected: string name; void setName(string s) { name = s; } public: void print() { cout << id << " " << name << " " << endl; } friend void fun(ca& a); //申明全局函数作友元,允许它访问私有保护成员 }; class derive : public ca { }; //ca类的派生类 void fun(ca& a) { //作友元的函数要定义在那个类的后面 a.id = "987"; //这是ca类的私有成员 a.setName("xyz"); //这是ca类的保护成员 } int main ( ) { ca a; //a.fun(...); //友元函数不是当前类的成员函数,所以这句编译出错 fun(a); a.print(); derive d; fun(d); //作参数时,类型转换为ca类 d.print(); return 0; }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:在C++中关于友元函数的进一步理解-创新互联
文章来源:http://azwzsj.com/article/cdedos.html