Подтвердить что ты не робот

Как удалить конструктор по умолчанию?

Иногда я не хочу предоставлять конструктор по умолчанию, и я не хочу, чтобы компилятор предоставил конструктор по умолчанию для моего класса. В С++ 11 я могу сделать следующее:

class MyClass 
{ 
  public: 
    MyClass() = delete; 
};

Но в настоящее время мой лектор не позволяет мне делать это в моем задании. Возникает вопрос: до С++ 11 есть ли способ сообщить компилятору, что он неявно предоставляет конструктор по умолчанию?

4b9b3361

Ответ 1

Я бы сказал, сделаю это частным.. что-то вроде

class MyClass
{
private:
    MyClass();
}

и никто (вне класса или класса друга) не сможет вызвать конструктор по умолчанию. Кроме того, у вас будет три варианта использования класса: либо предоставить параметризованный конструктор, либо использовать его как класс утилиты (один со статическими функциями) или создать factory для этого типа в классе друзей.

Ответ 2

Конечно. Определите свой собственный конструктор, по умолчанию или иначе.

Вы также можете объявить его закрытым, чтобы его невозможно было вызвать. Это, к сожалению, сделает ваш класс совершенно непригодным для использования, если вы не предоставите статическую функцию для его вызова.