convert function
自定义的类中实现转换函数可以转换为其他类型。实现类似于隐式类型转换。
class Fraction{
public:
operator double() {
return (double)(m_numerator / m_denominator);
}
double operator+(const double num) {
return (double)(m_numerator / m_denominator) + num;
}
private:
int m_numerator;
int m_denominator;
};
Fraction f(3, 5);
double re = 1.0 + f; //f可以被编译器根据operator double()转换函数隐式转换为double类型
但是,如果重载了+运算符,要注意是否存在二义性问题。
当然,根据需要可以转换为各种其他类型。
explicit关键字
C++中只带有一个参数的构造函数,或者除了第一个参数外其余参数都有缺省值的多参构造函数,就可以进行隐含的类型转换。explicit可以防止进行隐式类型转换。
explicit关键字可以和转换函数或重载操作符一起使用,进行类和基本类型自定义的算术操作。