class baseClass {
public:
friend int friendFuncReturn(baseClass &obj) { return obj.baseInt; }
baseClass(int x) : baseInt(x) {}
private:
int baseInt;
};
class derivedClass : public baseClass {
public:
derivedClass(int x, int y) : baseClass(x), derivedInt(y) {}
private:
int derivedInt;
};
在函数中friend int friendFuncReturn(baseClass &obj) { return obj.baseInt; }
我不明白为什么基类的友元函数适用于派生类?
不应传递派生类 obj。而不是基类 obj。 t 被视为错误?
我的问题是为什么当我将派生类对象传递给它时它会起作用?
友元函数可以继承吗?
不,友元函数不会被继承。
为什么基类函数可以作用于派生类对象?
因为友元函数正在使用可用的数据成员base class
仅有的。不是以下的数据成员derived class
. Since derived class
是一种base class
所以,好友功能运行良好。但请注意这里derived class
实例是sliced
并且信息仅适用于base class
.
friend function
如果您尝试访问受限制的成员,将会报告错误derived class
. e.g.
int friendFuncReturn(baseClass &obj) { return ((derivedClass)obj).derivedInt; }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)