{"id":16313,"date":"2024-03-15T12:43:17","date_gmt":"2024-03-15T12:43:17","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/"},"modified":"2025-08-07T01:57:03","modified_gmt":"2025-08-07T01:57:03","slug":"what-does-mutable-mean-in-c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/","title":{"rendered":"What does &#8216;mutable&#8217; mean in C++?"},"content":{"rendered":"<p>In C++, the keyword mutable is used to modify class member variables. It means that member variables marked as mutable can be modified in const member functions.<\/p>\n<p>In general, const member functions are not allowed to modify object member variables. However, in special cases, there may be a need to modify the value of a member variable in a const member function. In such cases, the mutable keyword can be used to mark the member variable, allowing it to be modified in a const member function.<\/p>\n<p>Modifying member variables declared with the mutable keyword within const member functions is allowed in order to protect the object&#8217;s immutability while still permitting specific variables to be altered in const member functions.<\/p>\n<p>Here is an example demonstrating the use of the mutable keyword:<\/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-type\">void<\/span> <span class=\"hljs-title\">setValue<\/span><span class=\"hljs-params\">(<span class=\"hljs-type\">int<\/span> value)<\/span> <span class=\"hljs-type\">const<\/span> <\/span>{\r\n    <span class=\"hljs-comment\">\/\/ \u4fee\u6539\u88ab mutable \u4fee\u9970\u7684\u6210\u5458\u53d8\u91cf<\/span>\r\n    mutableValue = value;\r\n  }\r\n\r\n  <span class=\"hljs-function\"><span class=\"hljs-type\">int<\/span> <span class=\"hljs-title\">getValue<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-type\">const<\/span> <\/span>{\r\n    <span class=\"hljs-comment\">\/\/ const \u6210\u5458\u51fd\u6570\u53ef\u4ee5\u8bbf\u95ee\u548c\u8bfb\u53d6 mutable \u6210\u5458\u53d8\u91cf<\/span>\r\n    <span class=\"hljs-keyword\">return<\/span> mutableValue;\r\n  }\r\n\r\n<span class=\"hljs-keyword\">private<\/span>:\r\n  <span class=\"hljs-keyword\">mutable<\/span> <span class=\"hljs-type\">int<\/span> mutableValue;\r\n};\r\n<\/code><\/pre>\n<p>In the above example, mutableValue is a member variable with mutable qualifier. setValue is a const member function that can modify the value of mutableValue. On the other hand, getValue is another const member function that can only read the value of mutableValue and cannot modify it.<\/p>\n<p>It is important to note that the mutable keyword can only be used for non-static member variables, not for static member variables or global variables.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C++, the keyword mutable is used to modify class member variables. It means that member variables marked as mutable can be modified in const member functions. In general, const member functions are not allowed to modify object member variables. However, in special cases, there may be a need to modify the value of a [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[453,1402,299,1404,1403],"class_list":["post-16313","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-development","tag-guide","tag-programming","tag-technology","tag-tutorial"],"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 does &#039;mutable&#039; mean in C++? - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn about what does &#039;mutable&#039; mean in c++?. Comprehensive guide with examples and best practices.\" \/>\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-does-mutable-mean-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What does &#039;mutable&#039; mean in C++?\" \/>\n<meta property=\"og:description\" content=\"Learn about what does &#039;mutable&#039; mean in c++?. Comprehensive guide with examples and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-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-15T12:43:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-07T01:57:03+00:00\" \/>\n<meta name=\"author\" content=\"William Carter\" \/>\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=\"William Carter\" \/>\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-does-mutable-mean-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/\"},\"author\":{\"name\":\"William Carter\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\"},\"headline\":\"What does &#8216;mutable&#8217; mean in C++?\",\"datePublished\":\"2024-03-15T12:43:17+00:00\",\"dateModified\":\"2025-08-07T01:57:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/\"},\"wordCount\":209,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Development\",\"guide\",\"programming\",\"technology\",\"tutorial\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/\",\"name\":\"What does 'mutable' mean in C++? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T12:43:17+00:00\",\"dateModified\":\"2025-08-07T01:57:03+00:00\",\"description\":\"Learn about what does 'mutable' mean in c++?. Comprehensive guide with examples and best practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What does &#8216;mutable&#8217; mean 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\/f697031891aacefc4b681d139781d3c0\",\"name\":\"William Carter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"caption\":\"William Carter\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What does 'mutable' mean in C++? - Blog - Silicon Cloud","description":"Learn about what does 'mutable' mean in c++?. Comprehensive guide with examples and best practices.","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-does-mutable-mean-in-c\/","og_locale":"en_US","og_type":"article","og_title":"What does 'mutable' mean in C++?","og_description":"Learn about what does 'mutable' mean in c++?. Comprehensive guide with examples and best practices.","og_url":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T12:43:17+00:00","article_modified_time":"2025-08-07T01:57:03+00:00","author":"William Carter","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"William Carter","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/"},"author":{"name":"William Carter","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0"},"headline":"What does &#8216;mutable&#8217; mean in C++?","datePublished":"2024-03-15T12:43:17+00:00","dateModified":"2025-08-07T01:57:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/"},"wordCount":209,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Development","guide","programming","technology","tutorial"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/","url":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/","name":"What does 'mutable' mean in C++? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T12:43:17+00:00","dateModified":"2025-08-07T01:57:03+00:00","description":"Learn about what does 'mutable' mean in c++?. Comprehensive guide with examples and best practices.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-does-mutable-mean-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What does &#8216;mutable&#8217; mean 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\/f697031891aacefc4b681d139781d3c0","name":"William Carter","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","caption":"William Carter"},"url":"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/16313","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\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=16313"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/16313\/revisions"}],"predecessor-version":[{"id":49866,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/16313\/revisions\/49866"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=16313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=16313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=16313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}