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的场合:

  1. 对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const 引用传递”,目的是提高效率。例如将void func(A a) 改为void func(const A &a)。
  2. 对于内部数据类型的输入参数,不要将“值传递”的方式改为“const 引用传递”。否则既达不到提高效率的目的,又降低了函数的可理解性。例如void func(int x) 不应该改为void func(const int &x)。
  • 要点6:在类中使用const时,注意const对象只能够访问类中的const成员函数,而非const对象可以访问任意成员函数。
  • 要点7:在C++11以前的版本中,类内部的常量成员必须在对象声明后,外部初始化其常量数值;C++11后这种方式停止支持,转而可以在类声明时直接初始化常量数值。
posted @ 2025-06-11 22:37  英俊潇洒鲜辣猪  阅读(17)  评论(0)    收藏  举报