Например, я хочу объявить класс, но я хочу, чтобы клиент не мог использовать конструктор копирования (или оператор присваивания копии)
Оба из следующих двух не позволяют использовать конструктор копирования:
1.
class Track
{
public:
Track(){};
~Track(){};
private:
Track(const Track&){};
};
2.
class Track
{
public:
Track(){};
~Track(){};
Track(const Track&)=delete;
};
Является ли один из этих способов "более правильным", чем другой, или равным? Есть ли побочный эффект?
//Does not compile with both the above ways
int main()
{
Track l;
Track p(l);
}