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
超级会员免费看
订阅专栏 解锁全文
1439

被折叠的 条评论
为什么被折叠?



