我在尝试弄清楚如何将类中的数据成员(最初是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。
答案 0 :(得分:1)
解决我的问题(所以问题解决了)
我认为解决方案比较简单。
Double::Double() : val(new double)
{
......
}
只需对每个构造函数执行此操作,然后将d.val或this-> val的任何实例更改为* d.val或* this-> val。
必须创建解构器以清除内存。