const可以用来修饰类中的成员函数以及成员变量以及类的对象
1、const修饰成员函数:
该函数是只读函数,不允许修改任何成员变量,但是可以使用类中的任何成员变量;
不允许修改任何非static的类型的成员变量;
不允许调用其他非const的成员函数;
2、const修饰成员变量
该成员变量不允许被修改;
该变量只能在初始化列表中进行赋值;
3、const修饰类的对象
该对象只能调用const的成员函数,确保const类型的对象永远不被改变;
4、使用const修饰的成员变量只能在初始化列表中进行初始化;使用构造函数初始化列表并没有效率上的优势,只是简洁明了,且变量初始化的方式与在初始化列表中的顺序无关,只与变量在类中声明的顺序相关;
static关键字
1、对象与对象之间是相互独立的,想要共享数据,需要使用静态成员函数以及静态成员变量;
2、静态成员变量是在程序编译时分配空间,在程序结束时释放空间;
3、静态成员变量的初始化需要在类的外面进行,格式:int Mystring::static_A = 10;,不能使用初始化列表对静态成员变量进行初始化;
4、既可以通过类名对静态成员进行使用,也可以通过对象名对静态成员变量进行使用,既可以同类名来调用静态成员函数,也可以通过对象名来调用静态成员函数,但是非静态成员变量以及成员函数都只能同类的对象进行调用;
5、在静态成员函数中只可以使用静态成员变量,非静态的成员变量以及成员函数由于需要在类的对象实例化的时候才会分配内存,因此在静态成员函数中是不可以使用非静态的成员变量以及不能调用非静态的成员函数的;