1、通常使用编程
一、const是一种经常使用的 类型修饰符。 const TYPE ValueName = value; (TYPE const ValueName = value;两者功能同样) 代表TYPE类型的变量ValueName的值永远是value,再也不改变。 TYPE能够是int double float char string等,也能够是自定义的类。函数
二、修饰函数形参,如 void fun( const int& iVal ); 避免在函数体内意外修改了iVal的值。实参是否为const无所谓。(void fun( const int iVal ); 不是好的编程习惯)指针
2、指针内存
一、char cname = 'd'; char* const chpt = &cname; char型指针chpt永远指向cname的地址,不能再指向别的地方,可是chpt指向的内存中的内容能够经过(*chpt)的方式来改变[1]。必须初始化。 ([1]必须知足。假如把char cname = 'd';改为const char cname = 'd';编译器会报错,由于违背了[1]条款)编译器
二、const char* chpt; ( char const * chpt;两者功能相同 ) char型指针chpt能够随便指向,可是chpt指向的内存中的内容不能够经过(*chpt)来改变[2]。 能够不初始化。条款[2]说明以下string
char ch1 = 's'; const char ch2 = 'w'; const char* chpt; chpt = &ch2; chpt = &ch1; ch1 = 'g'; 都正确。 可是*chpt = 't';是错误的。编译
三、const char ch = 'd'; (或者char ch = 'd';) const char* const chpt = &ch; char型指针chpt永远指向ch的地址,不能再指向别的地方,而且chpt指向的内存中的内容不能够经过(*chpt)来改变。必须初始化。class
3、const 成员变量变量
class Student{ const double ChengJi; };构造函数
在类中声明时与普通成员变量相同,可是必须在构造函数中初始化(此知识点见下一篇博文)。此时不可使用默认构造函数,由于默认构造函数没有对const成员变量初始化,会出现编译错误“没有合适的默认构造函数可用”。
4、