Maison >développement back-end >C++ >Pourquoi les classes C doivent-elles avoir un constructeur par défaut défini par l'utilisateur pour construire par défaut un objet « const » ?
Pourquoi C nécessite-t-il un constructeur par défaut fourni par l'utilisateur pour construire par défaut un objet const ?
La norme C exige que si un programme appelle l'initialisation par défaut d'un objet d'un type qualifié par const, le type de classe sous-jacent doit posséder un constructeur par défaut fourni par l'utilisateur. Cette exigence découle du fait que :
Pour éviter ce dilemme, la norme stipule que les objets const ne peuvent pas être construits à partir de types POD dépourvus de un constructeur par défaut fourni par l'utilisateur. Cela garantit que les objets const sont toujours initialisés lors de la création.
Distinction entre les classes POD et non-POD
Pour clarifier, l'exigence de la norme s'applique spécifiquement aux objets const de non -Cours POD. Les classes POD, qui manquent de fonctions virtuelles ou de classes de base et dont les données membres sont elles-mêmes des POD, peuvent être initialisées par défaut même sans constructeur défini par l'utilisateur. En revanche, les classes non POD nécessitent un constructeur par défaut fourni par l'utilisateur pour activer l'initialisation par défaut.
Exemple illustratif
Considérez l'extrait de code suivant :
struct B { B(): x(42) {} int doSomeStuff() const { return x; } int x; }; struct A { A() {} // Required by the standard B b; // Illustration purpose }; int main() { const A a; // Valid due to user-provided default constructor in A. }
Dans cet exemple, l'objet const 'a' de la structure A peut être construit par défaut car A a un constructeur par défaut fourni par l'utilisateur, qui satisfait aux exigences de la norme pour les classes non POD.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!