友元函数加多态
#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也是支持多态的。
你怎么改的?