网上科普有关“友元函数有什么作用?”话题很是火热,小编也是针对友元函数有什么作用?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
友元不是成员函数,但是它可以访问类中的私有成员。友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。
扩展资料:
成员函数和非成员函数最大的区别在于成员函数可以是虚拟的而非成员函数不行。所以,如果有个函数必须进行动态绑定(见条款38),就要采用虚拟函数,而虚拟函数必定是某个类的成员函数。
关于这一点就这么简单。如果函数不必是虚拟的,情况就稍微复杂一点。
举例:
看下面表示有理数的一个类:
class rational {
public:
rational(int numerator = 0,int denominator = 1);
int numerator() const;
int denominator() const;
private:
对象onehalf是一个包含operator*函数的类的实例,所以编译器调用了那个函数。而整数2没有相应的类,所以没有operator*成员函数。编译器还会去搜索一个可以象下面这样调用的非成员的operator*函数(即,在某个可见的名字空间里的operator*函数或全局的operator*函数)。
参考资料:
在c++中,用友元函数重载后置自增运算符时,其参数表中的参数个数为?
下列关于友元函数的描述中,错误的是()。
A.友元函数不是成员函数
B.友元函数只可访问类的私有成员
C.普通函数作为友元函数时,其调用方法同一般函数
D.友元函数可以是另一类中的成员函数
正确答案:友元函数只可访问类的私有成员
C++如何将一个函数声明为2个类的友元函数
一个,在后递增运算符重载函数的参数中加一个int型的参数。
运算符++和—有前置和后置两种形式,如果不区分前置和后置,则使用operator++()或operator-()即可;否则,要使用operator++()或operator--()来重载前置运算符,使用operator++(int)或operator-(int)来重载后置运算符,调用时,参数int被传递给值0。
以++ 为例说明,用友元函数来实现“++”运算符的重载时,前置++运算符的重载的一般格式:friend <type> operator ++ (ClassName & );其中,第一个参数是要实现++运算的对象。
后置++运算符的重载的一般格式:friend <type> operator ++(ClassName &,int);其中,第一个参数是要实现++运算的对象;而第二个参数除了用于区分是后置运算外,并没有其他意义,故起参数可有可无。
扩展资料:
类的友元函数是定义在类外部,但有权访问类的所有私有成员和保护成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。
如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字friend。
只要在两个要声明的类中,分别将该函数声明为友元函数即可。
C++对友元函数属于几个类并没有限制,只要在对应类中声明为友元,则该函数即为此类的友元函数。
参考代码如下:
声明函数void test();为类A和B的友元函数。
class?A{
private:
int?a;
friend?void?test();
};
class?B
{
private:
int?a;
friend?void?test();
};
这时 test函数同时为A和B的友元函数。
关于“友元函数有什么作用?”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[凡梦]投稿,不代表科技号立场,如若转载,请注明出处:https://hexox.com.cn/cshi/202502-1186.html
评论列表(4条)
我是科技号的签约作者“凡梦”!
希望本篇文章《友元函数有什么作用?》能对你有所帮助!
本站[科技号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育
本文概览:网上科普有关“友元函数有什么作用?”话题很是火热,小编也是针对友元函数有什么作用?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。友元不...