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 回答