Чтобы запретить копирование или назначение класса, общепринятой практикой является создание конструктора копирования и оператор присваивания частный. У Google и Qt есть макросы, чтобы сделать это простым и понятным. Эти макросы:
Google:
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
TypeName(const TypeName&); \
void operator=(const TypeName&)
Qt:
#define Q_DISABLE_COPY(Class) \
Class(const Class &); \
Class &operator=(const Class &);
Вопросы: Почему сигнатуры двух операторов присваивания различны? Кажется, что версия Qt верна. Какова практическая разница между ними?