【发布时间】:2012-07-21 12:11:09
【问题描述】:
我创建了一个简单的类,它为构造函数提供一个参数,如下所示。
class Jam
{
int age;
std::string name;
Jam *jam;
Jam(std::string argName) {
name = argName;
}
};
它接受参数并将Jam的name初始化为传递的参数。唯一的问题是我希望能够将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