在类构造函数中动态分配数据成员

时间:2014-11-10 04:08:21

标签: c++

我在尝试弄清楚如何将类中的数据成员(最初是int)转换为指向动态分配的内存块的指针时遇到了问题。

我知道在正常情况下我可以执行int * num = new int,但是如何在类中初始化它呢?

我的老师做了一个惊人的工作,没有在课堂上以最危险的方式解释这个问题。

这是类和构造函数的一个示例。

标题

class Double
{
private:
double *val;

.cpp

Double::Double()
{
this->equals(0.0);
}

Double::Double(const Double &d)
{
this->equals(d.val);
}

Double::Double(const double &d)
{
this->equals(d);
}

Double::Double(const Interger &i)
{
this->equals(i.toInt());
}

//New overloaded constructor using strings
Double::Double(const string &s)
{
this->equals(s);
}

void Double::equals(const double &d)
{
this->val = d;
}

我所知道的是我现在必须使数据成员成为指针,但我不知道如何创建新内存。我试着查看这个,但是我找不到一个如何在实际类中为其内存和构造函数执行DAM的示例。

修改的 我觉得解决方案比较简单。

Double :: Double():val(new double) { ...... }

只需对每个构造函数执行此操作,然后将d.val或this-> val的任何实例更改为* d.val或* this-> val。

1 个答案:

答案 0 :(得分:1)

解决我的问题(所以问题解决了)

我认为解决方案比较简单。

Double::Double() : val(new double)
{
......
}

只需对每个构造函数执行此操作,然后将d.val或this-> val的任何实例更改为* d.val或* this-> val。

必须创建解构器以清除内存。