【问题标题】:Creating a copy constructor with arguements for a class为类创建带有参数的复制构造函数
【发布时间】:2012-07-21 12:11:09
【问题描述】:

我创建了一个简单的类,它为构造函数提供一个参数,如下所示。

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

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

它接受参数并将Jamname初始化为传递的参数。唯一的问题是我希望能够将Jam 的另一个副本传递给构造函数,这样我就可以通过复制值来初始化其指向现有类的指针。通常在 C++ 中你可以指定Jam *jam = new Jam(existingJam);,它会被默认复制,但由于我已经有std::string argName 作为参数,它拒绝让我这样做。

我读过一篇文章here,它解释了如何创建自己的复制构造函数,但它相当乏味并且涉及单独复制每个类成员,这对于具有 10 多个数据成员的类似乎没有多大意义。有没有比单独初始化每个成员更好的方法?

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

【问题讨论】:

  • 那不是拷贝构造函数,它有一个额外的字符串参数。
  • 它怎么会不让你做呢?有什么问题?

标签: c++ class constructor copy


【解决方案1】:

[很可能我不明白你在问什么,但是这里……]

如果您自己不编写,编译器会提供一个复制构造函数。它的行为是依次复制每个成员变量。

【讨论】:

  • 这可能是你想要的,也可能不是你想要的(Jam *jam; 看起来有点可疑)
猜你喜欢
  • 2015-04-08
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 2017-03-27
  • 2019-08-28
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
相关资源
最近更新 更多