在构造函数的过程中,因为初始化成员列表要先于构造函数,因此在构造函数的过程中要避免将堆内存直接分配到初始化成员函数当中。因为当你初始化的时候,有时候并不清楚要分配几个数组的内存空间。
例如下面的pdatas,在堆中分配内存,因此,不能将他写成如下形式。
MyArray(int len = 1):len(len),pdatas = new int[len]
{
//由于初始化构造比len的内部参数要早,因此为了保险起见,将
//赋值的地方放在内部
};
正常一点的写法应该是下面这种。
class MyArray
{
public:
MyArray(int len = 1):len(len)
{
//由于初始化构造比len的内部参数要早,因此为了保险起见,将
//赋值的地方放在内部
pdatas = new int[len];
};
~MyArray()
{
delete[] pdatas;
pdatas = NULL;
};
private:
int* pdatas;
int len;
};
最后
以上就是积极水杯最近收集整理的关于C++构造函数初始化的全部内容,更多相关C++构造函数初始化内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复