{"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":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Il est de bonne pratique d&#039;initialiser les variables membres d&#039;une classe au moyen d&#039;une liste d&#039;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&#039;initialisation doit \u00eatre utilis\u00e9e pour certains objets qui ne peuvent pas \u00eatre\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Michel Leunen\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Autour de Linux | Ubuntu, linux, C++, audio, python, ...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"C++ \u2013 Liste d\u2019initialisation | Autour de Linux\" \/>\n\t\t<meta property=\"og:description\" content=\"Il est de bonne pratique d&#039;initialiser les variables membres d&#039;une classe au moyen d&#039;une liste d&#039;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&#039;initialisation doit \u00eatre utilis\u00e9e pour certains objets qui ne peuvent pas \u00eatre\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2008-05-17T09:28:38+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2008-05-17T09:28:38+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"C++ \u2013 Liste d\u2019initialisation | Autour de Linux\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Il est de bonne pratique d&#039;initialiser les variables membres d&#039;une classe au moyen d&#039;une liste d&#039;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&#039;initialisation doit \u00eatre utilis\u00e9e pour certains objets qui ne peuvent pas \u00eatre\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/#article\",\"name\":\"C++ \\u2013 Liste d\\u2019initialisation | Autour de Linux\",\"headline\":\"C++ &#8211; Liste d&rsquo;initialisation\",\"author\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#organization\"},\"datePublished\":\"2008-05-17T11:28:38+02:00\",\"dateModified\":\"2008-05-17T11:28:38+02:00\",\"inLanguage\":\"fr-FR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/#webpage\"},\"articleSection\":\"C++\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.leunen.com\\\/linux\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/category\\\/c\\\/#listItem\",\"name\":\"C++\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/category\\\/c\\\/#listItem\",\"position\":2,\"name\":\"C++\",\"item\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/category\\\/c\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/#listItem\",\"name\":\"C++ &#8211; Liste d&rsquo;initialisation\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/#listItem\",\"position\":3,\"name\":\"C++ &#8211; Liste d&rsquo;initialisation\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/category\\\/c\\\/#listItem\",\"name\":\"C++\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#organization\",\"name\":\"Autour de Linux\",\"description\":\"Ubuntu, linux, C++, audio, python, ...\",\"url\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/#author\",\"url\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/\",\"name\":\"Michel Leunen\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/41e08d5087493eaa9ce4ebd4e0a55ffb?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Michel Leunen\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/#webpage\",\"url\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/\",\"name\":\"C++ \\u2013 Liste d\\u2019initialisation | Autour de Linux\",\"description\":\"Il est de bonne pratique d'initialiser les variables membres d'une classe au moyen d'une liste d'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'initialisation doit \\u00eatre utilis\\u00e9e pour certains objets qui ne peuvent pas \\u00eatre\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/2008\\\/05\\\/c-liste-dinitialisation\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/author\\\/michel-leunen\\\/#author\"},\"datePublished\":\"2008-05-17T11:28:38+02:00\",\"dateModified\":\"2008-05-17T11:28:38+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#website\",\"url\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/\",\"name\":\"Autour de Linux\",\"description\":\"Ubuntu, linux, C++, audio, python, ...\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.leunen.com\\\/linux\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"C++ \u2013 Liste d\u2019initialisation | Autour de Linux","description":"Il est de bonne pratique d'initialiser les variables membres d'une classe au moyen d'une liste d'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'initialisation doit \u00eatre utilis\u00e9e pour certains objets qui ne peuvent pas \u00eatre","canonical_url":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/#article","name":"C++ \u2013 Liste d\u2019initialisation | Autour de Linux","headline":"C++ &#8211; Liste d&rsquo;initialisation","author":{"@id":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/#author"},"publisher":{"@id":"https:\/\/www.leunen.com\/linux\/#organization"},"datePublished":"2008-05-17T11:28:38+02:00","dateModified":"2008-05-17T11:28:38+02:00","inLanguage":"fr-FR","mainEntityOfPage":{"@id":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/#webpage"},"isPartOf":{"@id":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/#webpage"},"articleSection":"C++"},{"@type":"BreadcrumbList","@id":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux#listItem","position":1,"name":"Home","item":"https:\/\/www.leunen.com\/linux","nextItem":{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/category\/c\/#listItem","name":"C++"}},{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/category\/c\/#listItem","position":2,"name":"C++","item":"https:\/\/www.leunen.com\/linux\/category\/c\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/#listItem","name":"C++ &#8211; Liste d&rsquo;initialisation"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/#listItem","position":3,"name":"C++ &#8211; Liste d&rsquo;initialisation","previousItem":{"@type":"ListItem","@id":"https:\/\/www.leunen.com\/linux\/category\/c\/#listItem","name":"C++"}}]},{"@type":"Organization","@id":"https:\/\/www.leunen.com\/linux\/#organization","name":"Autour de Linux","description":"Ubuntu, linux, C++, audio, python, ...","url":"https:\/\/www.leunen.com\/linux\/"},{"@type":"Person","@id":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/#author","url":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/","name":"Michel Leunen","image":{"@type":"ImageObject","@id":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/41e08d5087493eaa9ce4ebd4e0a55ffb?s=96&d=mm&r=g","width":96,"height":96,"caption":"Michel Leunen"}},{"@type":"WebPage","@id":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/#webpage","url":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/","name":"C++ \u2013 Liste d\u2019initialisation | Autour de Linux","description":"Il est de bonne pratique d'initialiser les variables membres d'une classe au moyen d'une liste d'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'initialisation doit \u00eatre utilis\u00e9e pour certains objets qui ne peuvent pas \u00eatre","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/www.leunen.com\/linux\/#website"},"breadcrumb":{"@id":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/#breadcrumblist"},"author":{"@id":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/#author"},"creator":{"@id":"https:\/\/www.leunen.com\/linux\/author\/michel-leunen\/#author"},"datePublished":"2008-05-17T11:28:38+02:00","dateModified":"2008-05-17T11:28:38+02:00"},{"@type":"WebSite","@id":"https:\/\/www.leunen.com\/linux\/#website","url":"https:\/\/www.leunen.com\/linux\/","name":"Autour de Linux","description":"Ubuntu, linux, C++, audio, python, ...","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/www.leunen.com\/linux\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"Autour de Linux | Ubuntu, linux, C++, audio, python, ...","og:type":"article","og:title":"C++ \u2013 Liste d\u2019initialisation | Autour de Linux","og:description":"Il est de bonne pratique d'initialiser les variables membres d'une classe au moyen d'une liste d'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'initialisation doit \u00eatre utilis\u00e9e pour certains objets qui ne peuvent pas \u00eatre","og:url":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/","article:published_time":"2008-05-17T09:28:38+00:00","article:modified_time":"2008-05-17T09:28:38+00:00","twitter:card":"summary","twitter:title":"C++ \u2013 Liste d\u2019initialisation | Autour de Linux","twitter:description":"Il est de bonne pratique d'initialiser les variables membres d'une classe au moyen d'une liste d'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'initialisation doit \u00eatre utilis\u00e9e pour certains objets qui ne peuvent pas \u00eatre"},"aioseo_meta_data":{"post_id":"57","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 07:32:55","updated":"2025-06-23 20:45:33","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.leunen.com\/linux\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.leunen.com\/linux\/category\/c\/\" title=\"C++\">C++<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tC++ \u2013 Liste d\u2019initialisation\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.leunen.com\/linux"},{"label":"C++","link":"https:\/\/www.leunen.com\/linux\/category\/c\/"},{"label":"C++ &#8211; Liste d&rsquo;initialisation","link":"https:\/\/www.leunen.com\/linux\/2008\/05\/c-liste-dinitialisation\/"}],"_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}]}}