Effective C++ Item 3 ——尽可能使用const;const成员函数如何改变类的成员变量

C++ const

一、 语义约束

一个特定的对象不应该被修改,即是只读的。

二、用法

1. 修饰全局范围或命名空间内的静态对象

2. 修饰类的静态或非静态成员

3. 修饰指针或指针指向的数据

  • const出现在星号左边,则指针所指的内容为只读的。
  • const出现在星号右边,则指针自身为只读的。
  • const在星号左右均出现,则两者均为只读的。

4. 修饰迭代器

5. 修饰函数返回值

6. 修改类的成员函数

在函数声明后添加const,表示其为类的const成员函数,该函数不能修改类的任何非静态成员变量,但不是所有的成员变量都不能修改,总结如下:

  • 不能改变类的非静态成员变量。
  • 可以改变类的静态成员变量。
  • 可以改变类的被mutable修饰的成员变量。
#include <bits/stdc++.h>
using namespace std;
struct Test{
    mutable int a;
    static int b;
    Test(int a):a(a){
    }
    int getA() const{
        Test::b = 2;
        a = 2;
        return a;
    }
};
int Test::b = 1;

int main(){
    Test test(1);
    cout<<test.getA()<<endl;
    cout<<Test::b<<endl;
    return 0;
}

// 2
// 2

posted on 2023-02-05 22:33  七昂的技术之旅  阅读(112)  评论(0编辑  收藏  举报

导航