#include <iostream>
#include <cmath>
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 int()
{
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;
}
cout << com << endl;
の変換演算子をコンパイラが呼び出す方法を理解できません。変換演算子を使用しているクラスオブジェクト
同じクラスに複数の変換演算子を含めることもできます。その場合、決議はどのように行われるのですか?
を*「私は、コンパイラがどのように理解していませんcout << com << endl;」の変換演算子を呼び出すことを決意する*他に何をすると思いますか? –
標準のヘッダーの 'cout'を調べることができます。そして、それが一致するまでこれらのそれぞれをチェックすることに気付く。あなたのクラスが提供するもの。 –
_ "複数の変換演算子を持つこともできます" _コンパイラは "あいまいさ"エラーを出します(単一の変換が "最高"とみなされない場合) – mvidelgauz