const关键字
-
要点1:const修饰的变量默认为文件局部变量,如果需要在外部文件访问,需要显式声明extern const并初始化,并在外部调用的文件中显式声明extern const。
-
要点2:指针与const,技巧是从右往左读,将"*"看作pointer to,例如:
const int * const x; // x is a const pointer to const int
const int * x; // x is a pointer to const int
以上第一个是指向常量的常量指针,其指向的量以及指针本身都是不能被修改的;第二个是指向常量的普通指针,指针的指向可以改变,但仅能够指向其他常量。 -
要点3:非const对象的地址可以赋值给指向const对象的指针,但是通过指针修改变量时,不能使用const指针,必须转而使用别的指针。
-
要点4:不能使用void
*指向const对象,而是要使用void const* -
要点5:在函数中使用const的场合:
- 对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const 引用传递”,目的是提高效率。例如将void func(A a) 改为void func(const A &a)。
- 对于内部数据类型的输入参数,不要将“值传递”的方式改为“const 引用传递”。否则既达不到提高效率的目的,又降低了函数的可理解性。例如void func(int x) 不应该改为void func(const int &x)。
- 要点6:在类中使用const时,注意const对象只能够访问类中的const成员函数,而非const对象可以访问任意成员函数。
- 要点7:在C++11以前的版本中,类内部的常量成员必须在对象声明后,外部初始化其常量数值;C++11后这种方式停止支持,转而可以在类声明时直接初始化常量数值。

浙公网安备 33010602011771号