{"id":24824,"date":"2024-03-16T03:54:49","date_gmt":"2024-03-16T03:54:49","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/"},"modified":"2024-03-22T04:40:59","modified_gmt":"2024-03-22T04:40:59","slug":"what-are-the-uses-of-the-static-keyword-in-c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/","title":{"rendered":"What are the uses of the &#8220;static&#8221; keyword in C++?"},"content":{"rendered":"<p>In C++, the static keyword serves several purposes:<\/p>\n<ol>\n<li>Static member variables are those declared with the &#8216;static&#8217; keyword. They belong to the class rather than any specific object, meaning that all objects of the class share the same value of the static member variable. Static member variables allow data to be shared between instances of the class. They can be initialized either outside or inside the class.<\/li>\n<\/ol>\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-type\">static<\/span> <span class=\"hljs-type\">int<\/span> count;\r\n};\r\n\r\n<span class=\"hljs-type\">int<\/span> MyClass::count = <span class=\"hljs-number\">0<\/span>;\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    MyClass obj1;\r\n    MyClass obj2;\r\n    obj1.count = <span class=\"hljs-number\">5<\/span>;\r\n    obj2.count = <span class=\"hljs-number\">10<\/span>;\r\n    std::cout &lt;&lt; obj1.count &lt;&lt; std::endl;  <span class=\"hljs-comment\">\/\/ \u8f93\u51fa10<\/span>\r\n    std::cout &lt;&lt; obj2.count &lt;&lt; std::endl;  <span class=\"hljs-comment\">\/\/ \u8f93\u51fa10<\/span>\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n<\/code><\/pre>\n<ol>\n<li>Static member functions, declared using the static keyword, are referred to as static member functions. They are called on the class&#8217;s objects rather than on specific instances. Static member functions cannot access non-static member variables and can only access static member variables.<\/li>\n<\/ol>\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-type\">static<\/span> <span class=\"hljs-type\">void<\/span> <span class=\"hljs-title\">print<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n        std::cout &lt;&lt; <span class=\"hljs-string\">\"Hello, World!\"<\/span> &lt;&lt; std::endl;\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    MyClass::<span class=\"hljs-built_in\">print<\/span>();  <span class=\"hljs-comment\">\/\/ \u8f93\u51faHello, World!<\/span>\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n<\/code><\/pre>\n<ol>\n<li>Static local variables are variables declared within a function using the static keyword. They are initialized the first time the function is called and retain their value even after the function has finished executing, until the program ends. Their scope is limited to the function in which they are declared.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-function\"><span class=\"hljs-type\">void<\/span> <span class=\"hljs-title\">foo<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n    <span class=\"hljs-type\">static<\/span> <span class=\"hljs-type\">int<\/span> count = <span class=\"hljs-number\">0<\/span>;\r\n    count++;\r\n    std::cout &lt;&lt; count &lt;&lt; std::endl;\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-built_in\">foo<\/span>();  <span class=\"hljs-comment\">\/\/ \u8f93\u51fa1<\/span>\r\n    <span class=\"hljs-built_in\">foo<\/span>();  <span class=\"hljs-comment\">\/\/ \u8f93\u51fa2<\/span>\r\n    <span class=\"hljs-built_in\">foo<\/span>();  <span class=\"hljs-comment\">\/\/ \u8f93\u51fa3<\/span>\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n<\/code><\/pre>\n<ol>\n<li>The static keyword can also be used to modify the visibility of functions and variables. By adding the static keyword in front of a function or variable, their visibility can be limited to the current file, avoiding conflicts with functions or variables of the same name in other files. This usage is typically seen in functions or variables in header files to prevent redefinition errors.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>In C++, the static keyword serves several purposes: Static member variables are those declared with the &#8216;static&#8217; keyword. They belong to the class rather than any specific object, meaning that all objects of the class share the same value of the static member variable. Static member variables allow data to be shared between instances of [&hellip;]<\/p>\n","protected":false},"author":13,"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-24824","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 are the uses of the &quot;static&quot; keyword in C++? - 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-are-the-uses-of-the-static-keyword-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What are the uses of the &quot;static&quot; keyword in C++?\" \/>\n<meta property=\"og:description\" content=\"In C++, the static keyword serves several purposes: Static member variables are those declared with the &#8216;static&#8217; keyword. They belong to the class rather than any specific object, meaning that all objects of the class share the same value of the static member variable. Static member variables allow data to be shared between instances of [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/\" \/>\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-16T03:54:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T04:40:59+00:00\" \/>\n<meta name=\"author\" content=\"Isabella Edwards\" \/>\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=\"Isabella Edwards\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/\"},\"author\":{\"name\":\"Isabella Edwards\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\"},\"headline\":\"What are the uses of the &#8220;static&#8221; keyword in C++?\",\"datePublished\":\"2024-03-16T03:54:49+00:00\",\"dateModified\":\"2024-03-22T04:40:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/\"},\"wordCount\":235,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/\",\"name\":\"What are the uses of the \\\"static\\\" keyword in C++? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T03:54:49+00:00\",\"dateModified\":\"2024-03-22T04:40:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What are the uses of the &#8220;static&#8221; keyword in C++?\"}]},{\"@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\/5579144e23c225c8188167f3e3f888dd\",\"name\":\"Isabella Edwards\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"caption\":\"Isabella Edwards\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What are the uses of the \"static\" keyword in C++? - 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-are-the-uses-of-the-static-keyword-in-c\/","og_locale":"en_US","og_type":"article","og_title":"What are the uses of the \"static\" keyword in C++?","og_description":"In C++, the static keyword serves several purposes: Static member variables are those declared with the &#8216;static&#8217; keyword. They belong to the class rather than any specific object, meaning that all objects of the class share the same value of the static member variable. Static member variables allow data to be shared between instances of [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T03:54:49+00:00","article_modified_time":"2024-03-22T04:40:59+00:00","author":"Isabella Edwards","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Isabella Edwards","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/"},"author":{"name":"Isabella Edwards","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd"},"headline":"What are the uses of the &#8220;static&#8221; keyword in C++?","datePublished":"2024-03-16T03:54:49+00:00","dateModified":"2024-03-22T04:40:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/"},"wordCount":235,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/","url":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/","name":"What are the uses of the \"static\" keyword in C++? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T03:54:49+00:00","dateModified":"2024-03-22T04:40:59+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-are-the-uses-of-the-static-keyword-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What are the uses of the &#8220;static&#8221; keyword in C++?"}]},{"@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\/5579144e23c225c8188167f3e3f888dd","name":"Isabella Edwards","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","caption":"Isabella Edwards"},"url":"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/24824","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\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=24824"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/24824\/revisions"}],"predecessor-version":[{"id":58882,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/24824\/revisions\/58882"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=24824"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=24824"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=24824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}