一.命名空间:
1.命名空间的主要目的:是为了组织代码,避免命名冲突并提高代码的可读性和可维护性
2.命名空间可以存放:变量,常量,函数,类和结构体等等。同时命名空间也允许嵌套命名空间这一操作
2.命名空间的访问:
1.要访问命名空间内的成员,需要使用命名空间名作为前缀,使用 ::
操作符。
2.可以使用 using
声明将命名空间中的成员引入当前作用域,以便简化访问。
3.可以使用 using namespace
将整个命名空间引入当前作用域。
二.C++的输入和输出
1.cout是C++标准库中的标准输出流对象,用于将数据输出到控制台或其他输出设备。它通常与插入运算符 <<
一起使用,用来打印各种数据类型的值。
2.cin
是C++标准库中的标准输入流对象,用于从控制台或其他输入设备接收用户输入。它通常与提取运算符 >>
一起使用,用来从控制台读取各种数据类型的值。
3.<<是流插入运算符(搭配cout使用),>>是流提取运算符(搭配cin使用)。可以理解为信息的流动方向。
4.cout
和 cin
提供了类型安全的输入输出操作,可以处理各种数据类型(整数、浮点数、字符、字符串等)。所以C++可以实现自动识别变量类型,也就是说不用写%d什么的了
5.endl相当于'\n',换行符两者是等价的
三.缺省参数
1.在C++中,缺省参数(也称默认参数)是指在函数定义中为一个或多个参数指定默认值。如果在函数调用时未提供这些参数的值,则会使用这些默认值。缺省参数可以使函数调用更加简洁,避免重复指定相同的参数值。
2.缺省参数分类:
1.全缺省参数:在形参中所有变量均为缺省参数。
2.半缺省参数:在形参中不全都是缺省参数。
3 .不允许给声明和定义同时给缺省参数,会造成歧义。所以只给声明缺省参数。
4.缺省参数可以给函数
四.函数重载
1.函数重载是指可以在同一个作用域中定义多个同名函数,但这些函数的参数列表必须不同(参数的类型、个数或者顺序)。
2.条件:
1.函数名必须相同。
2.参数列表(参数类型,参数个数,参数类型的顺序)必须不同
3.缺省参数运用在函数重载时可能会发生歧义
五.引用:&
1.引用是一种别名,为一个已经存在的变量创建了一个新的名字。引用和指针类似,但使用起来更简洁和安全。
2.在底层实现上,编译器通常会使用指针来实现引用。这意味着,引用在内部往往被转换成对应的指针操作
3.引用的限制条件:1.引用必须进行初始化。2.一个变量可以对应多个引用,但是一个引用只能对应一个变量。
4.引用与指针的区别:1.引用必须初始化,指针可以不初始化(即为野指针)。2.一个引用只能对应一个变量,一个指针可以对应不同变量
六.auto:
1.auto
关键字用于声明变量时,可以根据初始化表达式推导出变量的类型。这种类型推导称为自动类型推导,使得变量声明更加简洁和灵活。
2.限制条件是:编译器必须能够确定初始化表达式的类型,才能进行类型推导
1.不能定义变量。
2.不能作为参数,因为作为形参的话不能明确到底需要什么类型的变量。
3.不能声明数组,因为在声明数组的时候数组需要开辟空间,不说明具体类型,难以开辟空间。
七.范围for
1.范围for进行的是值拷贝
2.若要进行深拷贝则需要使用引用
八.内联函数:inline
1.内联函数是一种特殊的函数,它在编译器处理时会被直接插入到每个调用它的地方,而不是像普通函数那样被调用时才执行跳转。这样做的目的是为了提高程序的执行效率,减少函数调用的开销。内联函数对应宏函数,常量(const)对应宏常量。
2.注意:内联函数不要声明和定义分离。因为inline被展开后就没有地址了,定义的时候就会找不到链接了
3.使用条件:只适用于小而且使用频繁的函数,如果函数体较大或者使用不频繁,编译器可能会忽略 inline
关键字,将函数视为普通函数进行处理。
九.空指针nullptr
nullptr是代替NULL的,因为 NULL 宏 替换的是整型的0,而不是指针。所以创建关键字nullptr代表空指针