Как удалить конструктор по умолчанию?
Иногда я не хочу предоставлять конструктор по умолчанию, и я не хочу, чтобы компилятор предоставил конструктор по умолчанию для моего класса. В С++ 11 я могу сделать следующее:
class MyClass
{
public:
MyClass() = delete;
};
Но в настоящее время мой лектор не позволяет мне делать это в моем задании. Возникает вопрос: до С++ 11 есть ли способ сообщить компилятору, что он неявно предоставляет конструктор по умолчанию?
Ответы
Ответ 1
Я бы сказал, сделаю это частным.. что-то вроде
class MyClass
{
private:
MyClass();
}
и никто (вне класса или класса друга) не сможет вызвать конструктор по умолчанию. Кроме того, у вас будет три варианта использования класса: либо предоставить параметризованный конструктор, либо использовать его как класс утилиты (один со статическими функциями) или создать factory для этого типа в классе друзей.
Ответ 2
Конечно. Определите свой собственный конструктор, по умолчанию или иначе.
Вы также можете объявить его закрытым, чтобы его невозможно было вызвать. Это, к сожалению, сделает ваш класс совершенно непригодным для использования, если вы не предоставите статическую функцию для его вызова.