顶层Const和底层Const——函数重载
Const指针的意义
-
- 不希望改变指针的指向,这个指针指向的值不希望被改变。
-
- 不希望改变这个指针所指向的值。
int a = 4;
int b = 5;
int *const ptr = &a;
ptr = &b; //错误,顶层指针,表示指针本身是个常量不准许改变const int* ptr = &b;
*ptr = 6; //错误,底层指针,表示指针所指向的对象是个常量,不准许改变
顶层const:指针本身是个常量
底层const:指针所指的对象是个常量
重载和const形参
Record lookup(Phone);
Record lookup(const Phone);
Record lookup(Phone* );
Record lookup(Phone* const);
函数参数的顶层const形参没法和没有顶层const的形参区分开来;
上面两组函数声明中,每一组的第一个声明和第二个声明是等价的;
Record lookup(Phone&);
Record lookup(const Phone&); //底层const,新函数
Record lookup(Phone* );
Record lookup(Phone* const); //底层const,新函数
通过函数形参所指对象是否为非常量来区分上述函数。从而实现函数的重载。