码迷,mamicode.com
首页 > 其他好文 > 详细

14. 函数重载,函数覆盖,函数隐藏

时间:2020-05-24 09:37:43      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:返回   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;
}

  

14. 函数重载,函数覆盖,函数隐藏

标签:返回   over   个数   public   派生   关键字   虚函数   编译   family   

原文地址:https://www.cnblogs.com/Nutshelln/p/12945707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!