顶层Const和底层Const——函数重载

顶层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,新函数

通过函数形参所指对象是否为非常量来区分上述函数。从而实现函数的重载。

猜你喜欢

转载自blog.csdn.net/ty13438189519/article/details/80173902
今日推荐