18 return a + b;
19 }
20
21 int main() {
22 D d1 = 1.1;
23 D d2 = 2.2;
24 std::cout << add(d1, d2) << std::endl;
25
26 return 0;
27 }
28
29
在24行执行add(d1,d2)函数时“(int)D”重载函数将被调用,程序运行的输出为:
(int)d called!
(int)d called!
3
类型转换操作符 vs 类型转换构造函数(conversion constructor)
有时候使用conversion constructor就能实现类型转换,这种方式效率更高而且也更直观,下面举例说明:
1 #include
2
3 class A
4 {
5 public:
6 A(int num = 0) : dat(num) {}
7
8 /* 重载"(int)a" */
9 operator int() { return dat; }
10
11 private:
12 int dat;
13 };
14
15
16 class X
17 {
18 public:
19 X(int num = 0) : dat(num) {}