Recherche…


Introduction

Plus d'exemples sur la manière dont C ++ peut mal tourner.

Suite du comportement indéfini

Se référant à des membres non statiques dans les listes d'initialisation

Se référer à des membres non statiques dans les listes d'initialisation avant que le constructeur ne commence à s'exécuter peut entraîner un comportement indéfini. Cela résulte du fait que tous les membres ne sont pas construits à ce moment. A partir du brouillon standard:

§12.7.1: Pour un objet avec un constructeur non trivial, le fait de se référer à un membre ou à une classe de base non statique de l'objet avant que le constructeur ne commence l'exécution entraîne un comportement indéfini.

Exemple

struct W { int j; };
struct X : public virtual W { };
struct Y {
   int *p;
   X x;
   Y() : p(&x.j) { // undefined, x is not yet constructed
   }
};


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow