C++ 構造を使用して高精度のテンプレートを作成する際のコンストラクター関数の問題
三叔
三叔 2017-06-12 09:24:48
0
1
1099

構造体のオーバーロード演算子に関する混乱

リーリー ###真ん中### リーリー

関数とは何ですか?

これら 2 つのステートメントを削除しても、コンパイルは正常に完了しますが、

リーリー
はコンパイルエラーになりますが、

リーリー

正常にコンパイルできます

構造体の初期化は行うべきではありません


big n(123);
Xiaobi が試したところ、結果に違いがないことがわかりました。原則は何ですか?神が助けてくれることを願っています

三叔
三叔

全員に返信(1)
伊谢尔伦

投稿の引用: http://www.cnblogs.com/chio/a…。割り当ては 2 つの既存のオブジェクト間で実行されますが、初期化では新しいオブジェクトが作成され、その初期値は別の既存のオブジェクトから取得されます。コンパイラはこれら 2 つの状況を区別し、代入中にオーバーロードされた代入演算子を呼び出し、初期化中にコピー コンストラクターを呼び出します。クラスにコピー コンストラクターがない場合、コンパイラーはデフォルトのコンストラクターを提供します。このデフォルトのコピー コンストラクターは、クラスのすべてのメンバーを単純にコピーします。

リーリー

コピーコンストラクターは次のように呼ばれます:

リーリー

もちろん、コメントした後はエラーが発生します、そして

リーリー

デフォルトのコンストラクターが最初に呼び出され、次に代入演算子が呼び出されるため、2 つの関数をコメントアウトしても問題はありません。

自分でデバッグできます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート