У меня есть вопрос, связанный с реализацией оператора =
в C++. Если я правильно помню, есть два способа реализации =
в классе: один должен перегружать =
явно, и, например:где я должен реализовать оператор = в C++
class ABC
{
public:
int a;
int b;
ABC& operator = (const ABC &other)
{
this->a = other.a;
this->b = other.b;
}
}
, а другой, чтобы определить =
неявно. Например:
class ABC
{
public:
int a;
int b;
ABC(const ABC &other)
{
a = other.a;
b = other.b;
}
}
Мой вопрос заключается в следующем:
1) Нужно реализовать =
явно и неявно? 2) Если требуется только один из них, какая реализация предпочтительна?
Спасибо!
Это две разные вещи. Первый пример имеет оператор присваивания. Второй - конструктор копирования. Это не имеет никакого значения, потому что сгенерированные версии компилятора достаточно хороши. – juanchopanza
Возможно, вы захотите прочитать о [правиле трех] (http://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29). –