在C++中,运算符重载可以实现类型转换。以下是一些常见的类型转换运算符重载示例:
- 将其他类型转换为内置类型:
class Fraction { public: Fraction(int numerator, int denominator) : numerator_(numerator), denominator_(denominator) {} // 将Fraction类型转换为double类型 operator double() const { return static_cast(numerator_) / denominator_; } private: int numerator_; int denominator_; };
- 将内置类型转换为其他类型:
class Complex { public: Complex(double real, double imaginary) : real_(real), imaginary_(imaginary) {} // 将double类型转换为Complex类型 Complex(double value) : real_(value), imaginary_(0) {} // 将Complex类型转换为double类型 operator double() const { return real_; } private: double real_; double imaginary_; };
- 自定义类型之间的转换:
class Point { public: Point(int x, int y) : x_(x), y_(y) {} // 将Point类型转换为string类型 operator std::string() const { return "(" + std::to_string(x_) + ", " + std::to_string(y_) + ")"; } private: int x_; int y_; };
在这些示例中,我们使用了static_cast
来进行类型转换。static_cast
是C++中最常用的类型转换方法之一,它可以在各种类型之间进行安全的转换。当然,还有其他类型转换方法,如dynamic_cast
和const_cast
,但它们的使用场景相对有限。