私は独自のベクトル クラス (x、y 値のコンテナー) を作成していますが、どのコンストラクター/代入演算子を自分で実装する必要があるのか 、コンパイラーが提供するものを期待できるのかよくわかりません。明らかに、デフォルトの動作を持たないメソッドや自動生成されないメソッドを作成する必要があります。しかし、確かに、コンパイラがまったく同じものを生成できる場合、何かを実装しても意味がありません。
私はVisual Studio 2010を使用しています(これはC++ 11の側面で問題になる可能性があります)。また、それが重要な場合、私のクラスはテンプレートです。
現在、私は持っています:
template <typename T>
class Integral2
{
// ...
Integral2(void)
: x(0), y(0)
{}
Integral2(Integral2 && other)
: x(std::move(other.x)), y(std::move(other.y))
{}
Integral2(T _x, T _y)
: x(_x), y(_y)
{}
Integral2 & operator =(Integral2 const & other)
{
x = other.x;
y = other.y;
return *this;
}
Integral2 & operator =(Integral2 && other)
{
x = std::move(other.x);
y = std::move(other.y);
return *this;
}
// ...
};
move ctor/move operator がある場合、copy ctor/assignment operator は必要ですか?