overload,重载
同一个类里面的多个方法,函数名相同但参数列表不同
class A { public: int func(int a); void func(int a, int b); void func(int a, int b, int c); int func(char* pstr, int a); };
注意:
- 函数返回值类型与构成重载无任何关系
- 类的静态成员函数与普通成员函数可以形成重载
- 函数重载发生在同一作用域,如类成员函数之间的重载、全局函数之间的重载
redifining,重定义,隐藏
继承中子类再次实现父类中同名方法然后把父类方法隐藏掉
class A { public: void func(void) { cout << "A_func(void)" << endl; } }; class B : public A { public: void func(void) { cout << "B_func(void)" << endl; } };
隐藏的实质: 在函数查找时,免费精选名字大全查找先于类型检查。如果派生类中成员和基类中的成员同名,就隐藏掉。编译器首先在相应作用域中查找函数,如果找到免费精选名字大全一样的则停止查找。
override,覆盖,重写
继承中子类去实现父类中同名virtual方法然后实现多态特性
细节区分:父类中是否有 virtual
class Base { public: virtual A & show() { cout << "In Base" << endl; return *(new A); } }; class Derived : public Base { public: B & show() //返回值协变,构成虚函数重写 { cout << "In Derived" << endl; return *(new B); } };
c/c++开发分享C++ 重载、重定义、覆盖概念对比区别地址:https://blog.csdn.net/weixin_45738823/article/details/108144042
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/597700.html