基本概念
// 常函数
- void getK(Time* const this)const{}
- const在函数后边的含义是,该成员函数不能修改类成员变量
- 既然是针对于成员函数,那么普通构造函数就不能在其后边加const
- 只有成员函数才能声明为const函数,普通函数和构造函数都不可以声明为const函数
// 常对象
- const Time myt; // 定义常对象
- 常对象只能调用常函数,不能调用普通函数
- 非常对象可以调用所有成员函数,包括const成员函数
// const成员变量
- 只能用初始化列表进行const成员变量的初始化,无法在构造函数体内进行初始化
// mutable成员变量
- mutable声明的成员变量,哪怕被声明为const,或者在const函数中,仍可被修改
- 引入mutable,可以突破const的限制
// explict声明的构造函数:explict Test(int data);
- 禁止该构造函数发生隐式类型转换
// Test()=default
- 编译器为Test()默认构造函数自动生成函数体
- 带参数的函数不可以使用=default
- 普通的函数也不可以使用=default
// Test()=delete
- 不允许编译器生成默认构造函数,即:让程序员显式地使用该函数。
// voerride:虚函数专用
- 在子类重写父类虚函数时,可以直接在函数后加override,virtual void fun()override{}
// final:虚函数专用
- 在父类虚函数后加final声明,不允许子类重写该虚函数