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;
}
能,为什么不能。不过要在析构前检测下目标与本身是否是同一实例;不然析构了就完犊子了。