请教C++中关于operator关键字的问题!
在TDateTime中有这样的定义:
__fastcall operator AnsiString() const;
__fastcall operator double() const;
__fastcall operator int() const;
这些都不是标准的运算符,上面的定义我该怎么用呢?
TDateTime a,b;
a int b ;//??不能
a double b;//??出错
a AnsiString b;//还是错
怎么办?
问题点数:20、回复次数:4Top
1 楼jianlinlong(楚 潇)回复于 2002-09-16 10:32:25 得分 0
没有会吗?还是这个问题太傻?也许很可笑,但是对于我理解operator很有帮助.
高手,大虾,去哪了。。。期侍中Top
2 楼alexxing(赤铸)回复于 2002-09-16 10:45:24 得分 9
这些是表示重载标准的“强制类型转换”操作
TDateTime d;
int(d) 调用
__fastcall operator int() const;
将其转换为 int
余此类推
Top
3 楼kimryo(God is on my side)回复于 2002-09-16 10:48:31 得分 9
TDateTime a,b;
double val=(double)b;//这就是operator double发挥作用的地方,
其实,在编译器生成中间码时,上面的代码会变成double val=b.operator double();
其他的同理。Top
4 楼jianlinlong(楚 潇)回复于 2002-09-16 12:43:55 得分 0
学 到一点,operator竟可实现“强制转换”,谢谢两位!Top
5 楼our(书呆子)回复于 2002-09-16 13:20:26 得分 2
operator有很多
像前面提到的强制转换
还有= =: >> << > <等
其实在编译时都得实际 的operator ...
Top




