重载和const形参

  顶层const不影响传入函数的参数,一个拥有顶层const的形参和无法另一个没有顶层const形参区分开来:

Record lookup(Phone);
Record lookup(const Phone); //重复声明了Record lookup(Phone)

Record lookup(Phone*);
Record lookup(Phone* const); //重复声明了Record lookup(Phone*)

  另一方面,如果形参是某种类型的指针或者引用,则通过区分其指向的对象是常量对象还是非常量对象可以实现函数重载,此时的const是底层的:

Record lookup(Account&); //函数作用于Account的引用
Record lookup(const Account); //新函数,作用于常量引用

Record lookup(Account*); //新函数,作用于指向Account的指针
Record lookup(const Account*); //新函数,作用于指向常量的指针

  

posted @ 2020-05-08 15:41  bootblack  阅读(180)  评论(0)    收藏  举报