【发布时间】:2016-06-23 19:23:39
【问题描述】:
我有一个 B 类,它的成员是指向 A 类对象的指针。在 A 类型的对象上使用复制构造函数时,它会被复制,但成员变量不会。 有没有办法复制 A 对象并自动复制其 B 成员? 以下代码显示了我试图解释的问题:
class A
{
public:
A(char t_name)
{
name = t_name;
}
~A()
{
}
char name;
};
class B
{
public:
A* attribute;
B()
{
attribute = new A('1');
}
~B()
{}
};
int main()
{
B* b_variable = new B;
B* b_copy = new B(*b_variable);
return 0;
}
【问题讨论】:
-
编写复制构造函数 operator= 并修复 B 类的析构函数。请参阅有关 3 和/或 5 规则的帖子。stackoverflow.com/questions/4172722/what-is-the-rule-of-threestackoverflow.com/questions/4782757/…
-
为什么你的代码在你的描述中颠倒了
A和B的意思?B有一个成员指向A。 -
@Alex 你为什么要在这个时代保留指向某些东西的指针?为什么不保留
A成员,然后您的所有问题都解决了。 -
@NicolBolas 真实的事实。我正在编辑。
-
@JonathanMee 是的,这可能是一个选项,但我想知道如何处理这个问题。无论如何,我也会重新考虑你的选择:)
标签: c++ copy-constructor