構造体のオーバーロード演算子に関する混乱
関数とは何ですか?
リーリー はコンパイルエラーになりますが、
正常にコンパイルできます
big n(123);Xiaobi が試したところ、結果に違いがないことがわかりました。原則は何ですか?神が助けてくれることを願っています
Xiaobi が試したところ、結果に違いがないことがわかりました。原則は何ですか?
投稿の引用: http://www.cnblogs.com/chio/a…。割り当ては 2 つの既存のオブジェクト間で実行されますが、初期化では新しいオブジェクトが作成され、その初期値は別の既存のオブジェクトから取得されます。コンパイラはこれら 2 つの状況を区別し、代入中にオーバーロードされた代入演算子を呼び出し、初期化中にコピー コンストラクターを呼び出します。クラスにコピー コンストラクターがない場合、コンパイラーはデフォルトのコンストラクターを提供します。このデフォルトのコピー コンストラクターは、クラスのすべてのメンバーを単純にコピーします。
コピーコンストラクターは次のように呼ばれます:
もちろん、コメントした後はエラーが発生します、そして
デフォルトのコンストラクターが最初に呼び出され、次に代入演算子が呼び出されるため、2 つの関数をコメントアウトしても問題はありません。
自分でデバッグできます。
コピーコンストラクターは次のように呼ばれます:
リーリーもちろん、コメントした後はエラーが発生します、そして
リーリーデフォルトのコンストラクターが最初に呼び出され、次に代入演算子が呼び出されるため、2 つの関数をコメントアウトしても問題はありません。
自分でデバッグできます。