C++中const和static的初始化

本文详细介绍了C++类中const和static类型变量的初始化方式和区别,包括如何在构造函数中初始化const变量,以及static变量的特性与使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在类中定义的const和static类型,他们的初始化跟其他一般变量的初始化不大相同。

1、const的初始化

  const变量定义的是一个常量值,必须要放在类的构造函数中进行定义。

  CAnalysis::CAnalysis(QWidget *parent) : QDialog(parent, Qt::FramelessWindowHint)
     ,m_nPerPageRecords(10)   //m_nPerPageRecords是const类型的

  若将这个初始化放在其他地方,就会报错

2、static的初始化

  static定义的是一个静态变量,它会保留上一次的值。

  初始化方法跟全局变量类似。

  int CAnalysis::m_nCurrPages = 0;   //m_nCurrPages 是静态变量

3、全局变量的定义

   全局变量的定义跟C的差不多,在一个.cpp中定义,在.h中extern

转载于:https://www.cnblogs.com/chenxuelian/archive/2010/05/04/1726947.html

### C++ 中 `const` `static` 关键字的用法与区别 #### 常量特性 (`const`) 在C++中,`const`用于定义不可变的数据。一旦初始化后,这些数据就不能再被修改。 - **常量变量** 定义一个常量整数如下所示: ```cpp const int MAX_SIZE = 10; ``` - **常量指针与指针常量** 可以创建指向常量对象的指针以及本身为常量的指针: ```cpp char *p = "hello"; // p是指向字符数组的可变指针 const char *q = "world"; // q是指向字符数组的只读指针 char* const r = str; // r是一个指向char类型的常量指针 ``` - **常量引用** 创建对某个特定值的别名而不允许通过该别名更改原值: ```cpp void func(const int& ref) { // 不得修改ref的内容 } ``` - **常量成员函数** 成员函数后面加上`const`表明此方法不会改变类的状态。 - **常量函数参数返回值** 函数形参列表中的`const`限定符确保传入的对象不被改动;而返回类型前加上的`const`则防止接收方篡改返回的结果[^1]。 #### 存储持续性作用域 (`static`) 另一方面,`static`主要影响程序元素的作用范围及其生存期: - **局部静态变量** 当在一个函数体内声明了一个带有`static`修饰符的局部变量时,则意味着这个变量在整个应用程序执行期间都保持有效,并且仅第一次进入该函数体的时候才会被执行初始化操作。 ```cpp void counter() { static int count = 0; ++count; std::cout << "Count is now: " << count << '\n'; } ``` - **类的静态成员** 对于类而言,静态成员属于整个类而不是单个实例化出来的对象。因此所有的对象共享同一个静态成员副本。 ```cpp class MyClass { public: static int sharedValue; }; int MyClass::sharedValue = 42; // 初始化外部链接的静态成员变量 ``` - **全局/命名空间级别的静态变量** 如果希望某些变量仅仅局限于当前源文件内可见的话就可以采用这种方式来实现隐藏效果。 ```cpp namespace Ns { static int hiddenVar = 98765; } ``` 综上所述,虽然两者都可以用来限制访问权限,但是它们各自有着不同的侧重点——`const`强调的是保护数据免受意外变更的影响,而`static`更侧重于调整实体的存在形式(比如延长生命周斯或是缩小可视区域)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值