重载是指在同一作用域内的几个函数名字相同但形参列表不同,称这些函数为重载函数.
重写(override)是指子类中对父类的虚函数不继承其实现,而重新实现.
两个除了返回类型外其他所有要素都相同的函数不是重载函数.
顶层const不影响形参的类型.
1 | Record lookup(Phone); |
但底层const可以区分两个函数.即如果形参是某种类型的指针或引用,则通过区分其指向的是常量对象还是非常量对象可以实现函数重载.
1 | Record lookup(Account&); // 函数作用于Account的引用 |
编译器可以通过实参是否是常量来推断应该调用哪个函数.因为const不能转换成其他类型,所以我们只能把const对象(指向const对象的指针)传递给const形参.但是非常量对象可以转换成const,所以上面两个函数都可以作用于非常量对象,但是当实参是非常量对象时,编译器会优先选择非常量版本的函数.
重写(override)是指子类中对父类的虚函数不继承其实现,而重新实现.
const_cast和重载
1 | const string &shorterString2(const string &s1, const string &s2) { |