lang:cpp:constructeur
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
lang:cpp:constructeur [2019/07/10 15:44] – Création avec "Initialisation d'un membre dans la déclaration vs dans le constructeur" root | lang:cpp:constructeur [2019/12/18 23:49] (Version actuelle) – Ajout de "Les exceptions dans un destructeur" root | ||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
int show(int i) | int show(int i) | ||
{ | { | ||
- | std::cout << " | + | |
- | | + | return 1; |
} | } | ||
Ligne 13: | Ligne 13: | ||
{ | { | ||
public: | public: | ||
- | int m_a = 0; | + | |
- | | + | Something() : |
- | m_a(show(m_a)) | + | // Ici, la valeur n'aura pas été préalablement initialisée à 0. |
- | | + | |
- | | + | { |
+ | } | ||
}; | }; | ||
int main() | int main() | ||
{ | { | ||
- | Something smh; | + | |
- | | + | std::cout << smh.m_a << std::endl; |
} | } | ||
</ | </ | ||
Ligne 31: | Ligne 32: | ||
i-858993460 | i-858993460 | ||
1 | 1 | ||
+ | |||
+ | ====Ordre de l' | ||
+ | |||
+ | L' | ||
+ | |||
+ | <code cpp> | ||
+ | class A | ||
+ | { | ||
+ | public: | ||
+ | int j; | ||
+ | int* i; | ||
+ | A(int* i_) :i(i_), j(*i) {} | ||
+ | }; | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int i = 0; | ||
+ | A a(&i); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | En more '' | ||
+ | |||
+ | < | ||
+ | Exception levée : violation d' | ||
+ | this-> | ||
+ | </ | ||
+ | |||
+ | ====Faire échouer un constructeur/ | ||
+ | Non, c'est impossible de faire échouer proprement un constructeur ou de renvoyer '' | ||
+ | |||
+ | Le seul moyen de faire échouer un constructeur est de générer une exception. | ||
+ | |||
+ | L' | ||
+ | |||
+ | ====Les exceptions dans un destructeur==== | ||
+ | C'est interdit. Par défaut, les constructeurs non '' | ||
+ | |||
+ | [[https:// |
lang/cpp/constructeur.1562766259.txt.gz · Dernière modification : 2019/07/10 15:44 de root