C++构造函数初始化

本文讨论了在C++中构造函数中初始化成员列表的注意事项,强调不应在成员初始化列表中直接分配堆内存。以MyArray类为例,解释了为什么在构造函数内部进行内存分配更为安全,以确保正确初始化成员变量len后的pdatas指针。此外,还展示了正确的构造函数和析构函数实现,以确保内存管理的正确性。
摘要由CSDN通过智能技术生成

在构造函数的过程中,因为初始化成员列表要先于构造函数,因此在构造函数的过程中要避免将堆内存直接分配到初始化成员函数当中。因为当你初始化的时候,有时候并不清楚要分配几个数组的内存空间。

 例如下面的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;

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值