C++ 修饰符类型

C++ 修饰符类型

C++ 提供了多种修饰符,用于改变变量或函数的默认行为。这些修饰符可以应用于数据类型、函数、类成员等。以下是常见的 C++ 修饰符类型:

数据类型修饰符

signed

用于声明有符号的整型变量,可以表示正数和负数。默认情况下,intchar 等类型是 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++ 中提供了灵活性和控制能力,可以根据需求选择合适的方式优化代码行为。

相关推荐
毕设源码-赖学姐5 分钟前
【开题答辩全过程】以 基于python的电影推荐系统为例,包含答辩的问题和答案
开发语言·python
星辰_mya11 分钟前
Elasticsearch线上问题之慢查询
java·开发语言·jvm
Yu_Lijing12 分钟前
网络复习篇——网络基础(一)
网络·c++·笔记
前端小菜袅13 分钟前
PC端原样显示移动端页面方案
开发语言·前端·javascript·postcss·px-to-viewport·移动端适配pc端
Bella的成长园地13 分钟前
为什么c++中的条件变量的 wait() 函数需要配合while 循环或谓词?
c++·面试
Highcharts.js15 分钟前
如何使用Highcharts SVG渲染器?
开发语言·javascript·python·svg·highcharts·渲染器
charlee4415 分钟前
为什么现代 C++ 库都用 PIMPL?一场关于封装、依赖与安全的演进
c++·智能指针·raii·pimpl·编译防火墙·封装设计
郝学胜-神的一滴19 分钟前
超越Spring的Summer(一): PackageScanner 类实现原理详解
java·服务器·开发语言·后端·spring·软件构建
摇滚侠20 分钟前
Java,举例说明,函数式接口,函数式接口实现类,通过匿名内部类实现函数式接口,通过 Lambda 表达式实现函数式接口,演变的过程
java·开发语言·python
阿里嘎多学长22 分钟前
2026-02-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管