C++基础笔记14
模板
作用:一次编写,多场景复用
1 | template <typename T>//具体值可以写任意不冲突的标识符 |
修饰词
作用:限定或改变变量,函数,类,对象等行为或属性的关键字或符号
const
只读,不可修改(对象,指针,指向const的指针,引用,成员函数,对象)
作为函数参数时,额外支持了字面量或临时对象的传递,原本用普通的引用传参编译是无法通过的,因为函数内部修改并没有实参变量来承载
在成员函数中,如果函数加上const修饰,那么函数中就无法修改成员变量
mutable
可变的
constexpr
修饰的变量才是真正意义上的常量
static
在函数内变量前加上static修饰等价于将这个变量开到全局,但是只能在函数内访问;在类的成员变量中定义也是开在全局,不占用对象的内存,初始值需要在全局通过类名和作用域解析运算符来给予。特点是所有的对象共享这个静态成员变量,也就是说,它是属于类的,而不是属于对象的,全局独一份,也能通过类名直接访问。还能作用于成员函数
inline
修饰函数,表示内联函数,在调用时会直接展开,省去函数调用的开销,性能会更高
预处理器
定义:在正式编译前,预先对代码进行处理
#include
#include <iostream>
代表从标准库中查找文件
#include "myheader.h"
代表先从同目录中找,找不到再从标准库中查找
例如多文件联合编译时就需要使用引号,当然多文件编译还涉及到编译指令的修改,可以学习makefile或者cmake相关知识
宏定义
#define PI 3.14159265
定义常量
#define SQRT(x) x * x
还可以传参数
#define OUT(n) cout << #n;
通过#加参数直接获取到这个参数的标识符
宏定义还可以使用多条语句,使用\进行换行,将反斜杠连接的内容都作为宏定义的一部分,但注意在条件语句中使用宏,如果不加花括号,只有一个语句会被包含在控制语句当中
1 |
|
#define RELEASE
单独定义一个标识符,结合条件预处理器使用
#ifdef #ifndef #if #elif #else #endif
1 |
|