C++ 修饰符类型
C++ 提供了多种修饰符,用于改变变量或函数的默认行为。这些修饰符可以应用于数据类型、函数、类成员等。以下是常见的 C++ 修饰符类型:
数据类型修饰符
signed
用于声明有符号的整型变量,可以表示正数和负数。默认情况下,int、char 等类型是 signed 的。
示例:
cpp
signed int a = -10;
unsigned
用于声明无符号的整型变量,只能表示非负数(0 和正数)。
示例:
cpp
unsigned int b = 100;
short
用于声明短整型变量,占用更少的内存空间(通常 2 字节)。
示例:
cpp
short int c = 5;
long
用于声明长整型变量,占用更多的内存空间(通常 4 或 8 字节)。
示例:
cpp
long int d = 1000000;
long long
用于声明更长的整型变量(通常 8 字节)。
示例:
cpp
long long int e = 10000000000LL;
float
用于声明单精度浮点数。
示例:
cpp
float f = 3.14f;
double
用于声明双精度浮点数。
示例:
cpp
double g = 3.14159;
long double
用于声明更高精度的浮点数。
示例:
cpp
long double h = 3.1415926535L;
存储类修饰符
auto
用于自动推断变量的类型(C++11 起)。
示例:
cpp
auto i = 42; // i 的类型为 int
register
建议编译器将变量存储在寄存器中(现代编译器通常忽略此修饰符)。
示例:
cpp
register int j = 10;
static
用于声明静态变量或函数,使其生命周期贯穿整个程序运行期间。
示例:
cpp
static int k = 0; // 静态局部变量
extern
用于声明外部链接的变量或函数,通常在多个文件中共享。
示例:
cpp
extern int l; // 声明在其他文件中定义的变量
mutable
用于类成员变量,允许在 const 成员函数中修改该变量。
示例:
cpp
class Example {
mutable int counter;
public:
void increment() const { counter++; }
};
访问控制修饰符
public
用于类成员,表示该成员可以在任何地方访问。
示例:
cpp
class MyClass {
public:
int publicVar;
};
private
用于类成员,表示该成员只能在类内部访问。
示例:
cpp
class MyClass {
private:
int privateVar;
};
protected
用于类成员,表示该成员可以在类内部和派生类中访问。
示例:
cpp
class MyClass {
protected:
int protectedVar;
};
其他修饰符
const
用于声明常量,表示变量或函数返回值不可修改。
示例:
cpp
const int m = 100;
volatile
用于声明易变变量,防止编译器优化对该变量的访问。
示例:
cpp
volatile int n = 20;
constexpr
用于声明常量表达式(C++11 起),在编译时求值。
示例:
cpp
constexpr int o = 30;
noexcept
用于声明函数不会抛出异常(C++11 起)。
示例:
cpp
void func() noexcept;
final
用于禁止类或虚函数被继承或重写(C++11 起)。
示例:
cpp
class Base final {}; // 禁止继承
override
用于显式标记派生类中重写的虚函数(C++11 起)。
示例:
cpp
class Derived : public Base {
void func() override;
};
这些修饰符在 C++ 中提供了灵活性和控制能力,可以根据需求选择合适的方式优化代码行为。