《第一章-初入江湖》 C++修炼生涯笔记(基础篇)C++初识
1.C++初识
1.1 创建一个C++程序
#inlude<iostrem>
using namespace td;int main()
{cout << "Hello word 666" << endl;system("pause");return 0 ;
}
运行结果:
Hello word 666
1.2 注释
作用:在代码中添加一些注释,方便自己和其他程序员阅读代码
两种格式:
单行注释: //这是单行注释
多行注释: /* 这是多行注释 */
1.3 变量
作用:给一段指定的内存空间起名,方便操作内存
语法:数据类型 变量名 = 初始值;
例如: int a = 666;
1.4 常量
作用:
用于记录程序中不可以修改的数据
C++定义常量的两种方式
1.4.1 #define 宏常量 常量值
例如:#define day 7
通常定义在文件的上方,表示一个常量.
1.4.2 const 数据类型 常量名 = 常量值
例如:const int day = 7;
通常定义在变量前加关键字const,修饰该变量为常量,不可修改.
1.5 关键字
作用:关键字是C++预先保留单词(标识符)
在定义变量或者常量的时候,不要用关键字
以下是C++关键字的分类表格(基于C++17标准,共73个):
以下是C++关键字的分类表格(基于C++17标准,共73个):
基本类型与类型修饰符
关键字 | 描述 |
---|---|
int | 整数类型 |
char | 字符类型 |
float | 单精度浮点数 |
double | 双精度浮点数 |
void | 无类型/空类型 |
bool | 布尔类型 (true /false ) |
short | 短整数修饰符 |
long | 长整数修饰符 |
signed | 有符号修饰符 |
unsigned | 无符号修饰符 |
wchar_t | 宽字符类型 (C++11起为关键字) |
流程控制
关键字 | 描述 |
---|---|
if | 条件判断 |
else | 条件分支 |
switch | 多路分支选择 |
case | switch 分支标签 |
default | switch 默认分支 |
for | 循环控制 |
while | 循环控制 |
do | 循环体 (与 while 联用) |
break | 跳出循环/开关 |
continue | 跳至循环末尾 |
goto | 无条件跳转 |
return | 函数返回值 |
类与面向对象
关键字 | 描述 |
---|---|
class | 定义类 |
struct | 定义结构体(默认公有继承) |
union | 定义联合体 |
enum | 定义枚举 |
public | 公有访问权限 |
private | 私有访问权限 |
protected | 保护访问权限 |
friend | 友元声明 |
virtual | 虚函数/虚继承 |
override | 显式重写虚函数 (C++11) |
final | 禁止重写/继承 (C++11) |
this | 当前对象指针 |
operator | 运算符重载 |
内存与存储类
关键字 | 描述 |
---|---|
new | 动态内存分配 |
delete | 动态内存释放 |
auto | 自动类型推导 (C++11) |
static | 静态存储期/类成员 |
extern | 外部链接声明 |
const | 常量修饰符 |
volatile | 易变性修饰符 |
mutable | 允许常量对象修改的成员 |
register | 建议寄存器存储 (C++17弃用) |
constexpr | 编译期常量 (C++11) |
模板与泛型
关键字 | 描述 |
---|---|
template | 定义模板 |
typename | 声明模板类型参数 |
using | 类型别名/命名空间引入 (C++11) |
异常处理
关键字 | 描述 |
---|---|
try | 异常捕获块 |
catch | 异常处理块 |
throw | 抛出异常 |
noexcept | 声明不抛出异常 (C++11) |
其他关键操作符
关键字 | 描述 |
---|---|
sizeof | 获取类型/对象大小 |
alignof | 获取类型对齐 (C++11) |
typeid | 获取类型信息 |
dynamic_cast | 运行时类型转换 |
static_cast | 编译时类型转换 |
const_cast | 移除 const /volatile |
reinterpret_cast | 低级类型转换 |
asm | 内联汇编 (实现定义) |
C++11/14/17 新增关键字
关键字 | 描述 | 版本 |
---|---|---|
nullptr | 空指针字面量 | C++11 |
decltype | 推导表达式类型 | C++11 |
thread_local | 线程局部存储 | C++11 |
char16_t | UTF-16 字符类型 | C++11 |
char32_t | UTF-32 字符类型 | C++11 |
注意:
- 部分关键字(如
and
,or
,not
等)是操作符的替代表示(如&&
,||
,!
),实际编码中较少使用。- C++20 新增关键字(如
concept
,requires
,co_await
等)未包含在本表中。- 总计 73个关键字(不含 C++20)。
1.6 标识符的命名规则
作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则
在C++中,标识符用于命名变量、函数、类、对象等程序实体。其命名规则如下:
核心规则
规则 | 合法示例 | 非法示例 | 原因 |
---|---|---|---|
1. 只能包含: 字母( a-z, A-Z )、数字(0-9 )、下划线(_ ) | age , _count , MAX_SIZE | user@name , price$ | 包含非法字符 @ 和 $ |
2. 首字符不能是数字 | value1 , _9items | 1stPlace , 2024_year | 以数字开头 |
3. 不能是C++关键字 | myClass , newData | int , class , return | 与关键字冲突 |
4. 区分大小写 | Sum ≠ sum ID ≠ id | - | 大小写敏感 |
附加限制与建议
规则 | 说明 |
---|---|
长度限制 | 理论上无限长,但编译器通常支持至少1024字符(足够使用) |
保留标识符 | 避免: - 双下划线开头( __var )- 下划线 + 大写字母( _MAX )(编译器/标准库保留) |
可读性建议 | - 使用有意义的名称(如 studentAge 而非 s )- 驼峰命名法( getUserName )或蛇形命名法(user_id )- 避免单个字符(除循环变量如 i, j ) |
合法与非法标识符示例
类型 | 示例 | 是否合法 | 说明 |
---|---|---|---|
合法 | playerHealth | ✅ | 字母组合 |
_debug_mode | ✅ | 下划线开头 | |
isValid | ✅ | 驼峰命名 | |
PI_VALUE | ✅ | 常量常用全大写 | |
非法 | float | ❌ | 关键字 |
3d_model | ❌ | 以数字开头 | |
user-name | ❌ | 包含连字符 - | |
namespace | ❌ | 关键字 |
特殊注意事项
- Unicode支持:
C++11起允许在标识符中使用Unicode字符(如résumé
,変数
),但需确保编译器支持且谨慎使用。 - 作用域冲突:
同一作用域内标识符必须唯一(如局部变量不能与函数同名)。 - 全局命名空间污染:
避免过短的全局标识符(如x
,data
),易引发命名冲突。
最佳实践:遵循团队编码规范,优先使用描述性名称,提高代码可读性和可维护性。