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