static和const关键字的区别

static和const关键字的区别

1. static关键字

  1. static局部变量将一个变量声明为函数的局部变量,而且这个局部变量在函数返回后不会被释放,而是继续保留在内存中
  2. 在模块内的static全局变量和函数可以被模块内的函数访问,但不能被模块外其他函数访问
  3. static修饰类成员变量属于整个类所拥有,对类的所有对象只有一份拷贝
  4. static修饰成员函数表示此成员函数属于整个类拥有,这个函数不接受this指针,因而只能访问类的static成员变量,const成员函数不能声明为虚函数

2. const关键字

  1. 修饰一个变量为只读
  2. 声明常量指针和指向常量
  3. const修饰函数形参,表明它是一个输入型参数,在函数内部不能修改其值
  4. 对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量,非const对象既能调用const成员函数,也能调用非const成员函数,const对象只能调用const成员函数
  5. 对于类成员函数,有时候必须指定其返回值为const类型,以使得返回值不为左值

型,以使得返回值不为左值**

image-20221117013757094

`static` 和 `const` 是 C++ 中非常重要的关键字,它们分别用于控制变量的作用域和值的可变性。 1. **静态(Static)**: - **作用域**:静态成员变量属于整个类(不论创建了多少个该类的对象),而不是单个对象。这意味着,当你为类添加一个静态成员时,每个对象实例都会共享同一个静态变量的副本。如果声明为 `static const`,则静态常量在整个程序运行期间只有一个拷贝,不可修改。 - **生命周期**:静态变量的生存期贯穿整个程序的执行过程,直到程序结束才被销毁。 - **初始化**:静态变量必须在类体外进行初始化,不能在构造函数或成员函数内直接赋值。 - **示例**: ```cpp class MyClass { public: static int sharedCount; }; // 初始化静态变量 int MyClass::sharedCount = 0; MyClass obj1, obj2; // 共享同一个sharedCount ``` 2. **常量(Const)**: - **变量值不变**:当一个变量被标记为 `const`,它的值在编译时就被确定下来,不能在运行时改变。这可以确保代码中的数据不会意外地更改,提高代码的安全性和可预测性。 - **两种形式**:有基本类型和引用类型的 const。对于基本类型,如 `int myConst = 5`,表示值不能改变;对于引用类型的 `const int& myConstRef = someInt`,是指引的内容不能改变但引用本身可以指向另一个常数。 - **适用范围**:不仅可以用在变量上,还可以用在函数参数、返回类型和成员函数上,增加函数的使用安全性和效率(例如,读取操作比写入操作更高效)。 ```cpp // 常量整型例子 const int maxValue = 100; int main() { // 不允许修改maxValue maxValue = 200; // 编译错误 // const引用示例 void printConst(const int& num) { // 只能读取num的值,不能修改 std::cout << num << '\n'; } int value = 15; printConst(value); // 正确 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默.@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值