私は、オペレータのオーバーロードを示すコードスニペットを見つけたオンラインチュートリアルでC++ OOPの概念を学びたいと考えています。なぜこのオペレータのオーバーロードは機能しますか?
コードを以下に示します。
class MyClass{
int var;
public:
Myclass(int value=0){
var = value;
}
Myclass operator+(Myclass &obj){
Myclass newobj;
newobj.var = this->var + obj.var;
return newobj;
}
};
は、私はそうのような主要機能でオペレーターを呼び出すとしますクラスの以前のチュートリアルの間に
int main(){
...
obj3 = obj2 + obj1;
...
}
、私はコピーコンストラクタは、すべての必要とする理由について読みますパラメータは2つのクラスオブジェクトをどのようにコピーするかの定義であるため、参照渡しされるパラメータです。したがって、私が理解する限り、クラスのオブジェクトをコピーする必要がある場合、コピーコンストラクタは必須です。
上記のコードスニペットでは、コンパイラはnewobjの値をmain()関数(obj3)のL_valueに "コピー"しようとしています。しかし、コピーコンストラクタが定義されていなければ、これはどのように可能ですか?私はここで何か誤解したことがありますか?
ありがとうございました!
コンパイラはあなたのためのデフォルトのコピーコンストラクタを定義します。 – melpomene
場合によっては、コンパイラはコピーctorとコピー代入演算子を生成します。 – Borgleader
related:http://stackoverflow.com/questions/12577907/default-copy-constructor – user463035818