{"id":57,"date":"2008-05-17T11:28:38","date_gmt":"2008-05-17T09:28:38","guid":{"rendered":"http:\/\/linux.leunen.com\/?p=57"},"modified":"2008-05-17T11:28:38","modified_gmt":"2008-05-17T09:28:38","slug":"c-liste-dinitialisation","status":"publish","type":"post","link":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/","title":{"rendered":"C++ &#8211; Liste d&rsquo;initialisation"},"content":{"rendered":"<p>Il est de bonne pratique d&rsquo;initialiser les variables membres d&rsquo;une classe au moyen d&rsquo;une liste d&rsquo;initialisation plut\u00f4t que de le faire dans le corps du constructeur par exemple.<br \/>\nCette pratique est plus efficace et moins sujette aux bugs sans compter que la liste d&rsquo;initialisation doit \u00eatre utilis\u00e9e pour certains objets qui ne peuvent pas \u00eatre contruits par d\u00e9faut. C&rsquo;est le cas des r\u00e9f\u00e9rences et des objets constants auxquels c&rsquo;est la seule fa\u00e7on de donner une valeur puisqu&rsquo;apr\u00e8s vous ne pourrez plus le faire.<\/p>\n<pre class=\"codesource\">\r\n<span class=\"reservedname\">class<\/span> A\r\n{\r\n  <span class=\"reservedname\">public<\/span>:\r\n    A()\r\n    {\r\n      str = <span class=\"quotedstring\">\"hello\"<\/span>;\r\n    }\r\n  <span class=\"reservedname\">private<\/span>:\r\n    std::string str;\r\n};\r\n<\/pre>\n<p>Dans le cas ci-dessus, str est d&rsquo;abord construit par d\u00e9faut. Un buffeur est allou\u00e9 \u00e0 ce <em>string<\/em>. Ensuite, ce buffeur est d\u00e9sallou\u00e9 et un nouveau, d&rsquo;une taille suffisante pour contenir le <em>string<\/em> est allou\u00e9. Le string \u00ab\u00a0hello\u00a0\u00bb est ensuite copi\u00e9 dans ce buffer.<\/p>\n<pre class=\"codesource\">\r\n<span class=\"reservedname\">class<\/span> A\r\n{\r\n  <span class=\"reservedname\">public<\/span>:\r\n    A() : str(<span class=\"quotedstring\">\"hello\"<\/span>) {}\r\n  <span class=\"reservedname\">private<\/span>:\r\n    std::string str;\r\n};\r\n<\/pre>\n<p>Dans l&rsquo;exemple ci-dessus, on utilise une liste d&rsquo;initialisation. str est directement construit avec le string \u00ab\u00a0hello\u00a0\u00bb. Il n&rsquo;y a pas cette construction par d\u00e9faut et la d\u00e9sallocation d&rsquo;un buffer. Cette m\u00e9thode est plus efficace.<\/p>\n<p>Pour les types intrins\u00e8ques comme les <em>int<\/em> par exemple, cela n&rsquo;a pas d&rsquo;importance. N\u00e9anmoins, initialiser les variables est toujours une bonne id\u00e9e et une source de bugs en moins.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il est de bonne pratique d&rsquo;initialiser les variables membres d&rsquo;une classe au moyen d&rsquo;une liste d&rsquo;initialisation plut\u00f4t que de le faire dans le corps du constructeur par exemple. Cette pratique est plus efficace et moins sujette aux bugs sans compter que la liste d&rsquo;initialisation doit \u00eatre utilis\u00e9e pour certains objets qui ne peuvent pas \u00eatre [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/57"}],"collection":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/comments?post=57"}],"version-history":[{"count":0,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/57\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/media?parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/categories?post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/tags?post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}