一、成员变量
const int a;
必须赋值或者在类的构造函数参数初始化列表中,两者只能取其一。
static int a;
不能在类中进行赋值,也不能在参数初始化列表中进行赋值。
对于静态变量,在类中只是声明,当在类外进行初始化时,必须先定义,即需要加上
int .即 int base::a=10;
二、成员函数
void fun()const
{}
const修饰的函数而不是返回const的变量,在该函数中不允许对函数变量进行改变。
virtual void fun()
{}
虚函数,可以被当作正常函数使用,只是该函数是通过虚函数表进行调用的,在调用的时候需要虚函数表的指针,而这个指针是对于对象来说的,即需要明确对象,拥有this指针才可以进行访问
static void fun()
{}
静态函数,表明我们可以不需要定义类的对象就可以直接调用该函数。
virtual void fun()const
{}
表明该虚函数中的内容是不可以更改的
static不可以和virtual一同使用,因为调用虚函数需要一个实例对象,而static并不能传入实例对象的this指针。
static不可以和const一起使用,因为const函数需要传入const this指针来保证函数的不可修改性。
三、不可以为虚函数
1. 构造函数:不可以为虚函数,因为构造函数需要执行完才能获得当前对象的this指针,没有this指针我们就无法访问类的虚函数表,从而构造函数就不嫩为虚函数。
2. 普通函数