顶层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&);
Record lookup(Phone* );
Record lookup(Phone*
const);
通过函数形参所指对象是否为非常量来区分上述函数。从而实现函数的重载。