Возможный дубликат:
Какой самый надежный способ запретить конструктор копирования на С++?
Предположим, что я хочу сделать класс не скопированным и хочу запретить конструктор и оператор присваивания. Я делаю их частными и оставляю невыполненными:
class Class {
//useful stuff, then
private:
Class( const Class& ); //not implemented anywhere
void operator=( const Class& ); //not implemented anywhere
};
таким образом, если любой из них случайно вызван из друзей или одного класса, я получаю ошибку времени ссылки.
Теперь, что, если пользователь реализует их? Я имею в виду, что нет реализации, поэтому каждый может добавить свой собственный:
Class::Class( const Class& )
{
//whatever they want
}
Конечно, я мог бы создать свою собственную реализацию и добавить там утверждение, но это задержит обнаружение непреднамеренных вызовов до тех пор, пока программа не будет запущена.
Есть ли способ предотвратить внедрение такого метода пользователем и все еще иметь возможность обнаружения непредвиденных вызовов на компиляцию?