this questionで報告されたコードを参照して、私は何が起こっているのかを理解するために以下の質問があります。const型を含むいくつかのC++コードを理解する&
class Integer32 {
public:
Integer32() {
this->setData(0);
}
Integer32(const Integer32& x) {
this->setData(x.getData());
}
Integer32(int data) {
this->data = data;
}
Integer32& operator=(const Integer32& x) {
if (this != &x) {
this->setData(x.getData());
}
return *this;
}
Integer32& operator=(const int& x) {
this->setData(x);
return *this;
}
Integer32 operator+(const Integer32& x) const {
return Integer32(this->getData() + x.getData());
}
void setData(int data) {
this->data = data;
}
int getData() const {
return data;
}
private:
int data;
};
int main(int argc, char** argv) {
Integer32 a, b, c;
a = 7;
b = 9;
a = b;
c = a + b;
return 0;
}
a, b
右、非constのInteger32
ですか?b = 9
はオペレータオーバーロード=
を呼び出しますが、リテラルはどうなりますか9
?私の演算子はconst int&
が必要ですが、私はリテラル定数を渡しています。a = b
は、b
がconst Integer32&
であることが必要であり、ここでのキャストはInteger32
からconst Integer32&
?c = a + b
は、両方とも定数にキャストされていますか?
デバッガを使用できませんでしたか?キャスト/コンストラクタまたは代入演算子が実行されると、それぞれのメンバ関数が呼び出されます。 –
これは典型的な "自分自身をデバッガにする"という質問ではありません。むしろ、この特定の例の言語はどのように機能しますか? – zoska