1、const 简单修饰为拥有固定值的常量,其值不可改变,且必须在定义的时候初始化。用const修饰的全局变量其在工程中是唯一,因此当其声明在被多个cpp包含的头文件中是可以的,不会出现链接是符号重复声明的错误。
2、const修饰指针,决定修饰指针还是修饰指针返回值看const在*前面还是后面
char* const p const用来修饰的是指针p,表示指针是const的,必须初始化指针,并且无法改变指针的指向。
char const* p与const char* p 是一样的,const修饰的指针指向的值,无法改变指针的内容,但是可以改变指针的指向如
(*p) = 'a' 错误,
p = "changed"正确
3、const修饰函数
(1)、函数返回值
const int Func(int); 函数必须返回一个const的值
(2)、参数
int Func(const int n) 表示n在整个函数内他的值不会发生改变,
(3)、函数结尾
int Func(int) const
函数必须是类的成员函数,表示该函数无法修改类的成员变量
int Func(int) 与上面是两个可以重载的函数,
const对象会调用const函数,但无法调用non-const函数,但non-const对象两者都可以调用。
当定义一个const对象时会调用上面的const函数。
4、Typedef与define区别举例
#define INTPOINT int *
typedef int * IntPoint
const IntPoint p 与IntPoint const p 都是修饰p的,此处可以把IntPoint当成是一个普通类型看,const都是修饰的p,p是一个const指针。