C++ 关键字

本文详细介绍了C++中的三个关键字:volatile、explicit和mutable的作用及使用场景。volatile用于通知编译器对象值可能在未被监测的情况下发生变化;explicit用于防止隐式类型转换;mutable允许在const成员函数中修改数据成员。

1.volatile

        volatile 修饰符的主要目的是提示编译器 该对象的值可能在编译器未监测到的情况下被
改变 因此编译器不能武断地对引用这些对象的代码作优化处理。

       将成员函数声明为volatile volatile限定修饰符在 3.13 节介绍 如果一个类对象的值可能被修改的方式是编译器无法控制或检测的。例如 如果它是表示 I/O端口的数据结构则把它声明为 volatile 与 const 类对象类似 对于一个 volatile类对象 只有 volatile 成员函数 构造函数和析构函数可以被调用 
class Screen {
public:
 char poll() volatile;

  //..........
};
char Screen::poll() volatile { ... }

2.explicit

防止隐式类型转换

3.mutable

mutable 修饰的数据成员永远不会是const 成员,即使它是一个const对象的数据成员。mutable成员总可以被更新,即使是在一个const成员函数中。

class Screen {
public:
 // 成员函数
private:
 string _screen;
 mutable string::size_type _cursor; // mutable 成员
 short _height;
 short _width;
};

### C++ 关键字概述 C++ 是一种功能强大的编程语言,拥有丰富的关键字集来支持其特性。截至 C++11 版本,共有 73 个关键字[^1]。 #### 数据类型相关关键字 这些关键字用于定义变量的数据类型: - `char`:字符型数据 - `short`:短整数类型 - `int`:基本整数类型 - `long`:长整数类型 - `float`:单精度浮点数 - `double`:双精度浮点数 - `bool`:布尔逻辑值类型 - `wchar_t`:宽字符类型 - `char16_t`, `char32_t`:分别表示UTF-16 和 UTF-32 字符编码的新类型 (自 C++11 起) #### 类型修饰符关键字 这类关键字用来修改已有的数据类型的性质: - `signed`: 明确指定数值为带符号形式 - `unsigned`: 表明该数值不带有正负号 - `short`, `long`: 修改整数类型的长度 - `const`: 声明常量不可变属性 - `volatile`: 提醒编译器此对象可能随时改变, 不应做优化假设 - `auto`: 自动推导声明实体的具体类型(引入于 C++11) ```cpp // 使用 auto 推断类型 auto num = 42; ``` #### 控制流语句关键字 控制程序执行流程的关键字包括但不限于: - `if`, `else`: 条件分支判断 - `switch`, `case`, `default`: 多路分支选择结构 - `for`, `while`, `do...while`: 循环迭代机制 - `break`, `continue`: 改变循环行为的操作命令 - `return`: 函数返回操作 #### 其他重要关键字 还有一些具有特殊用途的重要关键字: - `class`, `struct`, `union`, `enum`: 定义复杂数据结构的方式 - `typedef`: 创建新的类型名称作为现有类型的同义词 - `sizeof`: 查询给定表达式的大小或者查询某种特定类型所占空间尺寸 - `new`, `delete`: 动态内存分配与释放工具 - `try`, `catch`, `throw`: 错误处理异常捕捉框架组件 - `namespace`: 名称空间管理设施 - `friend`: 访问权限调整手段之一 - `virtual`: 实现多态性的基础要素 - `explicit`: 构造函数限定符防止隐式转换发生 - `this`: 当前实例指针引用 - `mutable`: 成员变量可变异标志位 - `constexpr`: 运行时常量计算指示标记(C++11 新增) - `decltype`: 获取表达式的实际类型(C++11 新增) - `noexcept`: 抛出异常情况说明(C++11 新增) - `nullptr`: 空指针常量替代方案(C++11 新增) - `static_assert`: 静态条件验证宏(C++11 新增) - `thread_local`: 线程局部存储类限定符(C++11 新增) - `alignas`, `alignof`: 对齐约束设定及获取(C++11 新增)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值