标签:返回 over 个数 public 派生 关键字 虚函数 编译 family
一.函数重载
1.函数名相同,参数列表不同(个数,顺序,类型)
2.vritual关键字、调用约定和返回值不做参考
二.函数覆盖(子类重写的虚函数覆盖了虚表中父类的虚函数,多态)
1.子类函数和父类函数声明一致(函数名,调用约定,参数列表,返回值)
2.父类函数有virtual关键字,子类可以不加virtual关键字
三.函数隐藏(子类隐藏父类的同名成员,或者说内层作用域隐藏外层作用域的同名成员)
1.作用域不同,例如子类和父类
2.子类和父类的函数同名,函数声明没要求
class B { public: void F() {} virtual void F(int) {} virtual void g(int, int) {} }; class D :public B { public: virtual void g(int, int) override {} //派生类的成员隐藏了同名的基类成员。声明在内层作用域的函数不会重载声明在外层作用域内的函数 void F(int, int) {} }; int main() { D d; d.g(1, 1); //d.F(3);//参数列表不匹配,编译报错。只能调用D的F,看不到B的F,除非加作用域运算符。 return 0; }
标签:返回 over 个数 public 派生 关键字 虚函数 编译 family
原文地址:https://www.cnblogs.com/Nutshelln/p/12945707.html