{"id":28029,"date":"2024-03-16T09:37:19","date_gmt":"2024-03-16T09:37:19","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/"},"modified":"2024-03-22T12:28:07","modified_gmt":"2024-03-22T12:28:07","slug":"what-is-the-purpose-and-usage-of-the-c-explicit-keyword","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/","title":{"rendered":"What is the purpose and usage of the c++ explicit keyword?"},"content":{"rendered":"<p>In C++, the keyword &#8220;explicit&#8221; is used to decorate single-parameter constructor functions of a class, serving the purpose of preventing implicit conversion. It is used as follows:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">MyClass<\/span> {\r\n<span class=\"hljs-keyword\">public<\/span>:\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">explicit<\/span> <span class=\"hljs-title\">MyClass<\/span><span class=\"hljs-params\">(<span class=\"hljs-type\">int<\/span> x)<\/span> <\/span>{\r\n        <span class=\"hljs-comment\">\/\/ \u6784\u9020\u51fd\u6570\u7684\u5b9e\u73b0<\/span>\r\n    }\r\n};\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-type\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n    <span class=\"hljs-function\">MyClass <span class=\"hljs-title\">obj1<\/span><span class=\"hljs-params\">(<span class=\"hljs-number\">5<\/span>)<\/span><\/span>;  <span class=\"hljs-comment\">\/\/ \u6b63\u786e\uff0c\u76f4\u63a5\u8c03\u7528\u6784\u9020\u51fd\u6570<\/span>\r\n    MyClass obj2 = <span class=\"hljs-number\">10<\/span>;  <span class=\"hljs-comment\">\/\/ \u9519\u8bef\uff0c\u7981\u6b62\u9690\u5f0f\u8f6c\u6362<\/span>\r\n    MyClass obj3 = <span class=\"hljs-built_in\">MyClass<\/span>(<span class=\"hljs-number\">15<\/span>);  <span class=\"hljs-comment\">\/\/ \u6b63\u786e\uff0c\u663e\u5f0f\u8c03\u7528\u6784\u9020\u51fd\u6570<\/span>\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n<\/code><\/pre>\n<p>In the code above, the explicit keyword is used to modify the constructor of MyClass, preventing it from being implicitly called. Therefore, assigning an integer value directly to an object of type MyClass (such as MyClass obj2 = 10;) will result in a compilation error. However, objects can still be created using explicit calls (such as MyClass obj3 = MyClass(15);).<\/p>\n<p>Using the explicit keyword can prevent unintended implicit conversions, improving the readability and safety of the program. In particular, using the explicit keyword in constructors with a single parameter can prevent the compiler from performing implicit conversions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C++, the keyword &#8220;explicit&#8221; is used to decorate single-parameter constructor functions of a class, serving the purpose of preventing implicit conversion. It is used as follows: class MyClass { public: explicit MyClass(int x) { \/\/ \u6784\u9020\u51fd\u6570\u7684\u5b9e\u73b0 } }; int main() { MyClass obj1(5); \/\/ \u6b63\u786e\uff0c\u76f4\u63a5\u8c03\u7528\u6784\u9020\u51fd\u6570 MyClass obj2 = 10; \/\/ \u9519\u8bef\uff0c\u7981\u6b62\u9690\u5f0f\u8f6c\u6362 MyClass obj3 = [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-28029","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is the purpose and usage of the c++ explicit keyword? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is the purpose and usage of the c++ explicit keyword?\" \/>\n<meta property=\"og:description\" content=\"In C++, the keyword &#8220;explicit&#8221; is used to decorate single-parameter constructor functions of a class, serving the purpose of preventing implicit conversion. It is used as follows: class MyClass { public: explicit MyClass(int x) { \/\/ \u6784\u9020\u51fd\u6570\u7684\u5b9e\u73b0 } }; int main() { MyClass obj1(5); \/\/ \u6b63\u786e\uff0c\u76f4\u63a5\u8c03\u7528\u6784\u9020\u51fd\u6570 MyClass obj2 = 10; \/\/ \u9519\u8bef\uff0c\u7981\u6b62\u9690\u5f0f\u8f6c\u6362 MyClass obj3 = [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T09:37:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T12:28:07+00:00\" \/>\n<meta name=\"author\" content=\"Liam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Liam\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/\"},\"author\":{\"name\":\"Liam\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\"},\"headline\":\"What is the purpose and usage of the c++ explicit keyword?\",\"datePublished\":\"2024-03-16T09:37:19+00:00\",\"dateModified\":\"2024-03-22T12:28:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/\"},\"wordCount\":132,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/\",\"name\":\"What is the purpose and usage of the c++ explicit keyword? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T09:37:19+00:00\",\"dateModified\":\"2024-03-22T12:28:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is the purpose and usage of the c++ explicit keyword?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\",\"name\":\"Liam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"caption\":\"Liam\"},\"sameAs\":[\"http:\/\/Wilson\"],\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What is the purpose and usage of the c++ explicit keyword? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/","og_locale":"en_US","og_type":"article","og_title":"What is the purpose and usage of the c++ explicit keyword?","og_description":"In C++, the keyword &#8220;explicit&#8221; is used to decorate single-parameter constructor functions of a class, serving the purpose of preventing implicit conversion. It is used as follows: class MyClass { public: explicit MyClass(int x) { \/\/ \u6784\u9020\u51fd\u6570\u7684\u5b9e\u73b0 } }; int main() { MyClass obj1(5); \/\/ \u6b63\u786e\uff0c\u76f4\u63a5\u8c03\u7528\u6784\u9020\u51fd\u6570 MyClass obj2 = 10; \/\/ \u9519\u8bef\uff0c\u7981\u6b62\u9690\u5f0f\u8f6c\u6362 MyClass obj3 = [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T09:37:19+00:00","article_modified_time":"2024-03-22T12:28:07+00:00","author":"Liam","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Liam","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/"},"author":{"name":"Liam","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671"},"headline":"What is the purpose and usage of the c++ explicit keyword?","datePublished":"2024-03-16T09:37:19+00:00","dateModified":"2024-03-22T12:28:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/"},"wordCount":132,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/","name":"What is the purpose and usage of the c++ explicit keyword? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T09:37:19+00:00","dateModified":"2024-03-22T12:28:07+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-purpose-and-usage-of-the-c-explicit-keyword\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What is the purpose and usage of the c++ explicit keyword?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671","name":"Liam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","caption":"Liam"},"sameAs":["http:\/\/Wilson"],"url":"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/28029","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=28029"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/28029\/revisions"}],"predecessor-version":[{"id":62300,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/28029\/revisions\/62300"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=28029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=28029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=28029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}