Include

#include 明显是预编译命令,作用是把真正的代码段替换掉命令所在位置。
#include <>引入类库路径里的头文件,#include ""引入的是程序目录路径里的头文件。

函数+const

返回值 函数名(参数) const
像上面这种函数后加const标识符的函数,表示它不会修改入参

运算符重载

类似java的重写toString()
形式:返回值 operator+(入参1, 入参2...)

  • 这个“+”可以替换为其他运算符
  • 运算符一般从左往右解析,如:cout << a << b 等价于 (cout << a) << b

友元

定义:友元 修饰 函数,如友元函数,表示该函数可以访问这个(定义友元函数的)类的实例的私有变量
形式:friend 函数声明
只能用在函数声明中

应用

使一个自定义的类可以以如下形式输出到cout(类似java的toString):

cout << anClassObj

转换函数

转换函数的原型声明

operator typeName();

“类” 与 “基本类型”的转换

类可以定义单一参数的构造函数,来与基本类型进行转换,如:

// 类定义:
	operator int() const;
	
// 隐式转换:
	aClass a = 3;
	
// 等价于显式声明
	aClass a = aClass(3);

如果在类的构造函数声明前加上explicit,则构造函数只能用于显式声明

// 声明为显式转换
explicit operator typeName();

变量&指针

变量是编译时分配的有名称的内存
指针主要作用于运行时,为其分配未命名的内存以存储值

// 模式1
int num = 3;
int * ptr = &num;

// 模式2
int * ptr = new int(3);

如上述代码,模式1 和 模式2 的本质是一样的,都是指针ptr指向了一个3,但是前者有变量名num,后者没有变量名

引用

  • 赋值时它标记内容所在地址,使用时它是地址内的内容