我在C ++中有一个使用类(非常基本的元素)的项目。 我的班级看起来像这样:
class vehicule: public frane,public motor,public directie,public noxe,public caroserie
{
char tip[40];
int placfatacant,placfatatot;
static const int placfatapret=18;
int placspatecant,placspatetot;
static const int placspatepret=15;
public:
vehicule()
void settip(char)
void verifauto()
;};
我被告知必须使用复制构造函数和析构函数。我有一些例子,但都使用动态分配。现在我的问题是:我的复制构造函数/析构函数应该做什么,因为我没有动态分配的内存来复制/删除?或者我应该将数据声明为
int *placfatacant
然后使用
delete placfatacant
? 提前致谢!
答案 0 :(得分:3)
如果你需要处理动态分配变量的删除,你只需要声明一个构造函数,如你所说。通常,对于每个new
,必须有delete
。
我没有在你的班级中看到任何new
个对象,所以我只想让编译器生成的析构函数/复制构造函数做它的事情。您的类完全是静态分配的,当它超出使用它的上下文的范围时将被删除。
答案 1 :(得分:2)
如果是出于学校目的,您可以更改:
// From:
char tip[40];
// To:
char * tip;`
然后在您的构造函数中,您将:
tip = new char[40]();
现在你必须创建一个像这样的复制构造函数:
vehicule(const vehicule & toCopy)
{
tip = new char[40]();
strcpy(tip, toCopy.tip);
}
您的析构函数只需要解除分配tip
:
~vehicule()
{
delete tip;
}