0

以下に示すように、コンストラクターに引数を取る単純なクラスを作成しました。

class Jam
{
     int age;
     std::string name;
     Jam *jam;

     Jam(std::string argName) {
          name = argName;
     }
};

引数を取り、渡されたパラメーターにJam'sを初期化します。name唯一の問題は、別のコピーをJamコンストラクターに渡して、値をコピーして既存のクラスへのポインターを初期化できるようにしたいことです。通常C++では指定できJam *jam = new Jam(existingJam);、デフォルトでコピーされますが、すでにstd::string argNameパラメーターとして持っているため、これを行うことを拒否します。

独自のコピー コンストラクターの作成方法を説明している記事を読みましたが、かなり面倒で、各クラス メンバーを個別にコピーする必要があるため、10 個以上のデータ メンバーを持つクラスではあまり意味がないように思えます。各メンバーを個別に初期化するよりも良い方法はありますか?

Jam::Jam(std::string argName, Jam *argJam)
{
     age = argJam->age;
     //etc...
}
4

1 に答える 1

2

[あなたが何を求めているのか理解できない可能性は十分にありますが、ここでは... ]

自分で作成しない場合、コンパイラはコピー コンストラクターを提供します。その動作は、各メンバー変数を順番にコピーすることです。

于 2012-07-21T12:14:29.557 に答える