首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

友元函数加多态,该如何解决

2013-09-09 
友元函数加多态#include iostreamusing namespacestdclass Aostream & operator (ostream &os, cons

友元函数加多态


#include <iostream>

using namespace  std;

class A;
ostream & operator<< (ostream &os, const A &aa);
class B;
ostream & operator<< (ostream &os, const B &bb);

class A
{
private:
int i;
public:
A()
{
i = 100;
}
friend ostream & operator<< (ostream &os, const A &aa);
};

class B:public A
{
private:
int j;
public:
B()
{
j = 222222;
}
friend ostream & operator<< (ostream &os, const B &bb);
};

int main()
{
A aa;
B bb;

/*下面实现多态*/
A * p;
p = &aa;
cout << *p << endl; //输出的是 aa对象
p = &bb;
cout << *p << endl; //输出的是 bb对象

return 0;
}

上面用友元重载了<<运算符,问题是友元重载后我还想把这个友元变成多态性,请大家帮我完善这个程序。
[解决办法]
我感觉无法直接实现,只能在你重载的函数里再调用各个类的虚实现,曲线实现。

ostream & operator<< (ostream &os, const A &aa)
{
    aa.myPrint();
    return os;
}
[解决办法]
我实现了一下,完全可用,reference也是支持多态的。
你怎么改的?

热点排行