函数的重载:语义和功能相似的函数用相同的名字表示,编译器根据不同的参数为不同的函数产生不同的内部标识符
C++函数调用C函数:extern "C"{ }
!!并不是函数名相同就是重载,全局函数和类成员函数就不是重载,作用域不同
防止隐式类型转换而导致重载函数调用的二义性
成员函数的重载、覆盖和隐藏
重载的特征overload:
(1)具有相同的范围(在同一个类中)
(2)函数名字相同
(3)参数不同
(4)virtual关键字可有可无
覆盖的特性overriding:
派生类覆盖基类的函数:
(1)范围不同(不在同一个类中)
(2)函数名字相同
(3)参数相同
(4)基类必须带virtual关键字
隐藏规则:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual
关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual
关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。
参数的缺省
只能出现在函数声明中
关键字inline 必须与函数定义体放在一起才能使函数成为内联
定义在类声明之中的成员函数将自动地成为内联函数
(1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。
(2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大