一。第一个C++程序
文件后缀为.cpp,Linux 使用 g++ 编译,VS 识别 cpp 自动调用 C++ 编译器
兼容 C 语言printf写法;原生标准输出使用<iostream>的std::cout

二。命名空间
1.定义:定义命名空间,需要使用关键字namespace,然后接一个{},括号中的即为命名空间的成员
2.作用:解决 C 语言全局命名污染、同名变量/函数编译冲突问题。
3.特性:
- 域隔离:分为局部域、全局域、命名空间域、类域,仅局部/全局域影响变量生命周期
- 嵌套定义:多文件同名 namespace 会自动合并为同一个
4.使用方式:
- 限定访问 (项目推荐):
bit::rand(每次使用前都加上,例如:std::cin>>a,std::endl) - 单独展开成员 :
using N::b(例如:先导入using std::cin;之后可以写cin>>a) - 全局展开 (仅练习用,项目禁用):
using namespace std
三。C++输入和输出
需要包含头文件<iostream>
1.输入:即std::cin>>x(待输入的字符)(如果std在前面已经导入过了,则可以不写),支持多组输入->std::cin>>x>>y。它会自动识别类型,不需要&,不需要格式符。和scanf类似
2.输出:即std::cout>>x(待输入的字符)(如果std在前面已经导入过了,则可以不写),支持多组输入->std::cout>>x>>y。它会自动识别类型,不需要&,不需要格式符。和printf类似
3.endl 和 ' \n ' :都有换行的功能,但略有差异(后续会提)
4.代码演示:

四。缺省函数
1.定义:就是在声明或定义函数时为函数的参数指定一个缺省值(默认值)。在调用函数时,若没有指定形参,则使用该形参的缺省值(默认值)
2.分类:
- 全缺省:就是全部形参都给一个缺省值
- 半缺省:部分形参给缺省值。规定半缺省参数必须从左往后依次连续缺省,不能间隔跳跃给缺省值
说明:带缺省函数的函数调用,规定必须从左往右依次给实参,不能跳跃给实参
函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定函数声明必须给 缺省值

五。函数重载
1.定义:函数重载就是 同一个作用域中出现同名函数。但是要求同名函数的形参不同,可以是参数个数不同,类型不同或顺序不同。仅返回值不同不能构成重载。注意:重载 + 缺省参数会产生调用歧义,编译报错。 C 语言不支持重载,是 C++ 独有的特性。


六。引用
1.定义:就是给变量取一个别名。编译器不会为引用变量开辟新的空间,它和它引用的变量公用一块内存空间。使用方法:类型&引用别名=引用对象
2.核心特性:
- 定义时必须初始化
- 一个变量可拥有多个引用
- 绑定实体后,无法再指向其他变量
代码演示:

- 功能:
- 做函数形参,修改形参影响实参
- 做函数形参,减少拷贝,提高效率
- 引用返回,即函数返回别名,可修改返回值,提升性能;禁止返回局部变量引用(野别名风险)



七。inline内联函数
1.作用:编译时c++编译器会在调用处展开内联函数,无需建立栈帧,提高效率,以此替代C的宏
2.限制:仅适合短小频繁调用函数;递归、长函数 inline 会被编译器忽略(仅建议,非强制)
3.注意点:inline不建议声明和定义分离在两个文件中,分离会导致链接错误
八。nullptr
- C 语言
NULL是宏,本质为 0,函数重载时会错误匹配 int 形参,产生逻辑 bug - C++11 新增
nullptr关键字,仅能隐式转换为各类指针,不会和整数混淆,是空指针标准写法。