12、C++ 类的高级特性解析

C++ 类的高级特性解析

1. 成员逐个初始化

在 C++ 中,当使用一个类对象初始化另一个类对象时,默认情况下会进行成员逐个初始化。例如:

Triangular tri1(8);
Triangular tri2 = tri1;

在这个例子中, tri1 的数据成员 _length _beg_pos _next 会依次复制给 tri2 。这就是默认的成员逐个初始化。

对于 Triangular 类,默认的成员逐个初始化可以正确复制类的数据成员,不需要我们做额外的操作。但对于 Matrix 类,默认的成员逐个初始化行为就不适用了。例如:

{
    Matrix mat(4, 4);
    {
        Matrix mat2 = mat;
        // 使用 mat2
        // mat2 的析构函数被调用
    }
    // 使用 mat
    // mat 的析构函数被调用
}

在这个例子中, mat2._pmat 会被初始化为 mat._pmat ,这会导致两个 _pmat 指向堆内存中的同一个数组。当 mat2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值