读书人

operatorlt;lt; 重载和多态解决办法

发布时间: 2012-03-30 17:32:09 作者: rapoo

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);

读书人网 >C++

热点推荐