在课堂上使用析构函数

时间:2015-03-13 14:25:19

标签: c++ class constructor copy destructor

我在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

? 提前致谢!

2 个答案:

答案 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;
}