上面这个程序中X类通过重载“operator A()”来实现将X类型对象转换成A类型,这种方式需要先创建一个临时A对象再用它去赋值目标对象;更好的方式是为A类增加一个构造函数:
A(const X& rhs) : dat(rhs) {}
同时,请注意上面程序的第45行more的类型在调用std::cout时被隐式地转成了int!
一个简单boost::ref实现
通过重载type cast operator,我们就可以自己实现一个简版的boost::ref。
1 #include
2
3 template
4 class RefHolder
5 {
6 public:
7 RefHolder(T& ref) : ref_(ref) {}
8
9 /* 重载“(T&)A”操作符 */
10 operator T& () const {
11 return ref_;
12 }
13
14 private:
15 T& ref_;
16 };
17
18
19 template