最近,我浏览了O'Reilly Media的 C++ Pocket Reference副本,当我看到一个关于用户定义类型的用户定义转换的简短部分和示例时,我感到很惊讶:
#include <iostream>
class account {
private:
double balance;
public:
account (double b) { balance = b; }
operator double (void) { return balance; }
};
int main (void) {
account acc(100.0);
double balance = acc;
std::cout << balance << std::endl;
return 0;
}
我已经用 C++ 编程了一段时间,这是我第一次看到这种运算符重载。这本书对这个主题的描述有点简短,给我留下了一些关于这个特性的未回答的问题:
- 这是一个特别晦涩的功能吗?正如我所说,我已经用 C++ 编程了一段时间,这是我第一次遇到这种情况。我没有太多运气找到有关此的更深入的材料。
- 这个比较便携吗?(我在 GCC 4.1 上编译)
可以将用户定义的类型转换为用户定义的类型吗?例如
运算符 std::string () { /* 代码 */ }