operator<< 重载和多态
我的类层次结构:
CPic<--CLine<------------CRectangle
<------------CEllipse
<--CPolygon
其中CPic是虚基类
现在想遍历一个存放CPic*的Vector并调用of<<(**it);
其中vector<CPic*>::iterator it; ofstream of;
问题是operator<<重载是写在类外面的,
怎样实现子类对象的<<行为多态呢?
[解决办法]
- C/C++ code
ostream& operator << (ostream& os, const CPic& obj){ obj.save(os); return os;}
[解决办法]
1) 把 << 改写到类里
2) 如1楼
[解决办法]
多态不是分运行期和编译期吗?
你把<<写在类外,那就只能多重载几个版本,
否则用运行期的多态就只能用虚函数了,职能写在
类的内部.
楼上的两位,请问:用CPic& obj调用虚函数去实现多态吗?
引用????????
引用????????
引用????????
[解决办法]
楼主这样试试:
ostream& operator << (ostream& os, CPic* obj)
{
obj.save(os);
return os;
}
CPic中:
virtual void save(ostream& os)const=0;
然后:调用of < <(*it);