友元关系的继承
我在书中看到,友元关系是不能继承的。可是我在测试时却发现不同。请大家看看:class Fu
{
friend class FZ;
protected:
string name;
private:
int age;
public:
void shuchu(string n="Fu",int a=50)
{
name=n;
age=a;
cout<<"基类"<<name<<"===="<<age<<endl;
}
};
class Zi : public Fu
{
protected:
int xingqu;
};
class FZ
{
public:
void mem(Fu f)
{
cout<<f.age<<endl;
}
void mem(Zi z)
{
cout<<z.age<<endl;
}
};
void main()
{
Fu f;
Zi z;
f.shuchu();
z.shuchu();
FZ fz;
fz.mem(f);//这里输出50按说正常,因为友元可以访问此类的任何成员
fz.mem(z);//但是这里也输出了50,为什么呢?难道书中有错还是C++弥补了这一不足或者其他什么的?我看的是C++ Primer!
}
输出结果:
基类Fu====50
基类Fu====50
50
50
Press any key to continue
[[it] 本帖最后由 独孤剑魔 于 2008-11-4 10:11 编辑 [/it]]