class Matrix
{
public:
Matrix(int m, int n) : _m(m), _n(n), _array(new int[m * n]) {}
Matrix(const Matrix &other)
: _m(other._m), _n(other._n), _array(new int[_m * _n]) {}
Matrix(Matrix &&other) : _m(other._m), _n(other._n), _array(other._array)
{
other._m = 0, other._n = 0, other._array = nullptr;
}
Matrix &operator=(const Matrix &other)
{
this->~Matrix();
new (this) Matrix(other);
}
Matrix &operator=(Matrix &&other)
{
this->~Matrix();
new (this) Matrix(std::move(other));
}
~Matrix()
{
delete[] _array;
}
private:
int _m, _n;
int *_array;
}
在拷贝赋值函数里调用析构函数和拷贝构造函数可行吗
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- GKatHere 2021-04-18 12:23关注
能,为什么不能。不过要在析构前检测下目标与本身是否是同一实例;不然析构了就完犊子了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 Matlab打开默认名称带有/的光谱数据
- ¥50 easyExcel模板 动态单元格合并列
- ¥15 res.rows如何取值使用
- ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
- ¥15 CSP算法实现EEG特征提取,哪一步错了?
- ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
- ¥15 vue3前端取消收藏的不会引用collectId
- ¥15 delphi7 HMAC_SHA256方式加密
- ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
- ¥15 下列c语言代码为何输出了多余的空格