转换函数

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关键字可以和转换函数或重载操作符一起使用,进行类和基本类型自定义的算术操作。

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top