[解決済み] 代入演算子とコピーコンストラクタの違いは何ですか?
2022-05-12 10:14:59
質問
C++の代入コンストラクタとコピーコンストラクタの違いがよくわかりません。以下のような感じです。
class A {
public:
A() {
cout << "A::A()" << endl;
}
};
// The copy constructor
A a = b;
// The assignment constructor
A c;
c = a;
// Is it right?
代入コンストラクタ、コピーコンストラクタのメモリ確保方法を知りたいのですが。
どのように解決するのですか?
A コピーコンストラクタ を初期化するために使用されます。 を初期化するために使用されます。 オブジェクトを他のオブジェクトのデータから取得します。
A(const A& rhs) : data_(rhs.data_) {}
例えば
A aa;
A a = aa; //copy constructor
某 代入演算子 のデータを置き換えるために使用されます。 のデータを置き換えるために使用されます。 オブジェクトを他のオブジェクトのデータで初期化します。
A& operator=(const A& rhs) {data_ = rhs.data_; return *this;}
例えば
A aa;
A a;
a = aa; // assignment operator
コピー構文をデフォルト構文+代入で置き換えることも可能ですが、その場合は効率が悪くなります。
(余談ですが、上記の私の実装はまさにコンパイラが無償で付与してくれるものなので、手動で実装してもあまり意味はないでしょう。もし、この2つのうち1つでもあれば、何らかのリソースを手動で管理している可能性があります。その場合、あたり 3 のルール のように、他の1つとデストラクタも必要になる可能性が非常に高いです)。
関連
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] C++11の'typedef'と'using'の違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】C++の余分な資格エラー
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] ルール・オブ・スリーとは?