📜  C++ 中的转换运算符

📅  最后修改于: 2022-05-13 01:55:35.676000             🧑  作者: Mango

C++ 中的转换运算符

在 C++ 中,程序员使用类作为具体类型来抽象现实世界的对象。有时,需要将一种具体类型隐式转换为另一种具体类型或原始类型。转换运算符在这种情况下起着重要作用。它类似于类中的运算符重载函数。
例如考虑下面的类,在这里,我们正在为复数创建一个类。它有两个数据成员:实数和虚数。

C++
// CPP Program to demonstrate Conversion Operators
#include 
#include 
using namespace std;
 
class Complex {
private:
    double real;
    double imag;
 
public:
    // Default constructor
    Complex(double r = 0.0, double i = 0.0)
        : real(r)
        , imag(i)
    {
    }
 
    // magnitude : usual function style
    double mag() { return getMag(); }
 
    // magnitude : conversion operator
    operator double() { return getMag(); }
 
private:
    // class helper to get magnitude
    double getMag()
    {
        return sqrt(real * real + imag * imag);
    }
};
 
int main()
{
    // a Complex object
    Complex com(3.0, 4.0);
 
    // print magnitude
    cout << com.mag() << endl;
    // same can be done like this
    cout << com << endl;
}


输出
5
5

我们以两种不同的方式打印复杂对象的大小。
请注意,编译器在调用基于类型的适当函数时将拥有更多控制权,而不是程序员所期望的。使用其他技术如类/对象特定成员函数(或使用 C++ Variant 类)来执行此类转换将是一个很好的做法。在某些地方,例如在与现有 C 库进行兼容调用时,这些是不可避免的。