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关注
能,为什么不能。不过要在析构前检测下目标与本身是否是同一实例;不然析构了就完犊子了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报