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
),易引发命名冲突。
最佳实践:遵循团队编码规范,优先使用描述性名称,提高代码可读性和可维护性。