目录
友元的定义
类中的主要特点就是数据的隐藏以及它的封装,就是类中的私有成员,只能在内定义的范围中使用,换句话来说就是私有成员就只能通过他的成员函数来访问,但是平时我们访问类的私有成员时,需要在程序中一次或者多次的调用成员函数,,这样就会使得调用的函数越次数越来越多,空间的开销和时间的开销也会越来越大,从而降低我们程序的运行效率
友元的好处
为了解决以上的问题,C加加特别提供了一种特殊的访问私有成员的途径,这种方法在不放弃所有成员的数据安全情况下,即封装性,像一个普通的函数或者类中的成员,函数可以访问到某一类信息中,在C加加中用有源作为实现这个条件的一种辅助手段,居家家中的有缘为数据隐藏以及封装性,这堵密不透风的墙开了一个小孔,外界可以通过有源函数这个小孔窥探类内部的秘密,所以来说,有缘就是一种可以通向私有成员的后门
友元函数初识
友元函数是可以不属于任何类的非成员函数,他也可以是另一个类的成员文书,虽然友元函数,可能不是当前类的成员函数,但是它可以访问该类中的所有成员,包括私有成员保护成员和共有成员三大部分
友元函数的定义
在类中声明友元函数时,需要在它的函数名前加上关键字friend,该声明既可以放在私有部分,也可以放在公有部分也可以保护部分。友元函数可以定义在类的内部,也可以定义在类的外部
下面举一个将非成员函数声明为友元函数的例子:
#include <iostream> using namespace std; class A { public: A(int n,int s) { num = n; score = s; } void showscore() { } friend int score_get(A &ob) { return (int)(ob.score / ob.num); } private: int num, score; }; int main() { A obj[3] = { A(3,300), A(4,450), A(5,480) }; for (int i = 0; i < 3; i++) { cout << score_get(obj[i]) << endl; } return 0; }
输出结果:
100
112
96