1、转换运算符:一种特殊的类成员函数。定义该运算符后,编译器将在可以使用内置转换的地方自动调用它:
class SmallInt { public: SmallInt(int i = 0) : m_val(i) { if (i < 0 || i > 255) throw std::out_of_range("Bad SmallInt initializer"); } // 转换函数必须是成员函数,通常定义为const operator int() const { return m_val; } private: std::size_t m_val; }; int main() { SmallInt si(12); double dval = 4.5; // si转换成int,再转换成double if (si >= dval) {} // si转换成int,再转换成bool if (si) {} cout << si << endl; // si转换成int // 3.541先被转换成int,再用int构造SmallInt对象 SmallInt si2 = 3.541; int ival = static_cast<int>(si2) + 3; // 显式转换 return 0; }
另外,语言只允许一次(自动)类类型转换。即,(只)通过转换运算符,若C类型可以转换为B类型,B类型可以转换为A类型,则C类型不可以直接转换为A类型。
参考资料:
《C++ Primer》
不断学习中。。。
原文:http://www.cnblogs.com/hanerfan/p/5136038.html