Parfois, je ne souhaite pas fournir de constructeur par défaut, ni le compilateur fournir un constructeur par défaut pour ma classe. En C++ 11, je peux faire des choses comme:
class MyClass
{
public:
MyClass() = delete;
};
Mais actuellement, mon conférencier ne me permet pas de le faire dans le cadre de mon travail. La question qui se pose est la suivante: avant C++ 11, existe-t-il un moyen de demander au compilateur de s’arrêter implicitement de fournir un constructeur par défaut?
Je dirais que le rendre privé .. quelque chose comme
class MyClass
{
private:
MyClass();
}
et personne (de l'extérieur de la classe elle-même ou des classes d'amis) ne pourra appeler le constructeur par défaut. De plus, vous aurez trois options pour utiliser la classe: soit fournir un constructeur paramétré, soit l’utiliser comme classe utilitaire (une classe avec uniquement des fonctions statiques) ou créer une fabrique pour ce type dans une classe amie.
Sûr. Définissez votre propre constructeur, par défaut ou non.
Vous pouvez également le déclarer privé afin qu'il soit impossible d'appeler. Malheureusement, cela rendrait votre classe complètement inutilisable, à moins que vous ne fournissiez une fonction statique pour l'appeler.
Outre la déclaration du constructeur privé par défaut, vous pouvez également lever une exception lorsque quelqu'un tente de l'appeler.
class MyClass
{
private:
MyClass()
{
throw [some exception];
};
}