接触了几年的C, 终于接触了C++, 发现C++果然博大精深,拥有很多机制. 今天就程序问题又遇到一些指针和C++里const的问题, 总结一下经验.
首先判断一下常量指针和指针的区别
const int *p = &
int const *p = &
这两者是一样的,都是常量指针,修饰指针所指向的变量, 不可以通过*p来修改变量的值, 但可以改变指针指向变量.
int * const p = &
修饰指针本身,p所指向的值可以改变,但p无法指向其它变量, 且p需要在定义就进行初始化.
const int * const p = &
常量指针常量,两者皆和
C++ const限定符
· const定义时必须初始化
·外部引用const时,不可再进行赋值
例:extern const int i ; 合法
extern const int i = 100; 不合法
·定义常量const define
尽量使用const enum inline 而非define
const 指明类型,而define只是单纯的替换
const char str[ ] = "ABC"
#define STR "ABC"
且define每次调用时,都会进行内存分配,而const的值被编译进静态变量区, 不会每次都再创建.
·const 可以被修改
const int i = 0;
int *p = (int *)&i;
*p = 100;
通过类型转换,可以改变const的值
引有 const常量初始化情况
A f;
const A &e = f;
这样e只能访问声明为const的成员函数,而不能访问一般的成员函数。