約Cのデフォルトのコピーコンストラクタ++

コピーコンストラクタ

「インサイドC ++オブジェクト・モデルは、」非常に良い本は、クラスの構築と破棄を理解するために特に便利です。

1は、C ++のデフォルトコピーコンストラクタについて私に従っている場合は、一般的に、我々は次のような場合にそれを使用します

// class A {...};
A aa; // default ctor
A a = aa; // copy ctor

//
void func(A a) { // TODO }
func(a) // copy ctor
    
A f() { return A(); }
f(); // copy ctor
    
// 以下是我遇到与下面相似问题时的产生的这个思考
class B : public A {
  B(const A &a) A(a) {...}  // A没有explicit copy constructor
  // TODO
};

私はAで独自のコピーコンストラクタを定義しなかった場合は、クラスは、関数のデフォルトの動作は、それが何であるかを生成し、自動的に生成されたデフォルトのコピーコンストラクタを使用しますか?

実際には、ここにあるデフォルトのmemberwiseの初期化(、状況は浅いコピーを表示します一見出会いポインタ)を、過去に各データメンバの値をコピーすることですが、彼は再帰的にメンバクラスのオブジェクトの一つ取るのではなく、物事実施例memberwise初期化方法。

おすすめ

転載: www.cnblogs.com/codemeta-2020/p/12634002.html