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 : de root
