目录
1. 存储类型说明符(Storage Class Specifiers)
摘要
在 C++ 中,specifiers(限定符或说明符)是用于修饰变量、函数、类等各种程序元素的关键字。常用的 specifiers 包括存储类型说明符、访问说明符、类型限定符等。我们将简单介绍有哪些常见的 specifiers,后续我会针对某些限定符再进行详细介绍,比如const,friend。
1. 存储类型说明符(Storage Class Specifiers)
存储类型说明符用于指定变量的存储方式和生存期。
- auto
`auto` 说明符用于让编译器自动推导变量的类型。
auto x = 5; // 编译器推导出 x 是 int 类型
auto y = 3.14; // 编译器推导出 y 是 double 类型
- register
建议编译器将变量存储在寄存器中,而不是 RAM 中(现代编译器可能会忽略这个)。
register int count = 0;
- static
a. 局部静态变量:函数内部的静态变量在函数调用之间保留其值。
b. 静态成员变量:类中的静态成员变量在所有对象之间共享。
void func() {
static int counter = 0;
counter++;
std::cout << "Counter: " << counter << std::endl;
}
class MyClass {
public:
static int s_value;
};
int MyClass::s_value = 0; // 定义静态成员变量
- extern
声明一个变量或函数在另一个文件中定义,提示编译器该变量或函数的定义在其他地方,比如另外的C++文件或C文件中。
extern int count;
void func();
int main() {
func();
std::cout << count << std::endl;
return 0;
}
- mutable
允许在 const 成员函数中修改成员变量。
class MyClass {
public:
void setValue(int v) const {
value = v;
}
private:
mutable int value;
};