以下に示す式で、一時的に const の型が想定されているかどうかは不明です。
#include <iostream>
class X {
public:
X(int a) { i = a; cout << "X(int) [" << (int)this << "]" << endl; }
X& operator+(const X& x)
{
i += x.i;
cout << "X operator+(const X&) [" << (int)this << "]" << endl;
return *this;
}
~X() { cout << "~X [" << (int)this << "]" << endl; }
private:
int i;
};
int main()
{
X x = X(3) + X(4);
cout << "done" << endl;
return 0;
}
X(3)
非 const のように動作します ( を呼び出すことができるためoperator+
、一方、X(4)
const のように動作します ( には const 引数が必要なためoperator+
)。
誰かが明確にすることができますか、正しい理解とは何ですか?