c/c++语言开发共享C++ 重载、重定义、覆盖概念对比区别

overload,重载同一个类里面的多个方法,函数名相同但参数列表不同redifining,重定义,隐藏继承中子类再次实现父类中同名方法然后把父类方法隐藏掉override,覆盖,重写继承中子类去实现父类中同名virtual方法然后实现多态特性细节区分:父类中是否有 virtual…


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); }; 

注意:

  1. 函数返回值类型与构成重载无任何关系
  2. 类的静态成员函数与普通成员函数可以形成重载
  3. 函数重载发生在同一作用域,如类成员函数之间的重载、全局函数之间的重载

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

(0)
上一篇 2021年5月8日
下一篇 2021年5月8日

精彩推荐