| 发表于:2007-01-12 13:28:23 楼主 |
有如下代码 class vertex { float x,y,z;}; class mvertex : public vertex { operator vertex() { swap( y, z ); return vertex( x, z, y ); } operator vertex&() { swap( y, z ); return (vertex&)*this; } operator const vertex&() { swap( y,z ) return (const vertex&)*this; } mvertex& operator=( const vertex& a ); } vertex operator+( const vertex& a, const vertex& b ); 然后有如下调用 mvertex a,b; a = a + b;//这里总是调用上面定义的这个operator+,而没有调用强制转换操作符 operator const vertex&(), 因此,这里的得到的结果总是错的. 为什么会产生这样的问题呢? |
|
|
|
|