C++面试高频考点 重写、重载、隐藏有何区别?

这么多年过去了,对于应届毕业生,函数的重写、重载、隐藏始终是一个非常重要的知识点;

重写

1、分别位于父类和子类中;
2、父类的函数必须有virtual;
3、子类中的函数与父类虚函数的函数名、参数列表、返回值都必须相同;

重载

1、要在同一个作用域下;
2、函数名相同,参数列表不同(和返回值无关);
3、和有没有virtual无关;

隐藏

在实际使用过程中,你会发现,一旦名字相同,无论参数列表怎么样(参数是你自己填的,你当然填的是子类函数需要的那个参数,当然在调用子类),有没有virtual,其实调用出来的都是子类函数,但是一定要对比的话,只能归纳出以下两点:
1、如果子类函数与父类函数同名,但是参数不同。此时,不论有无virtual关键字,父类的函数将被隐藏(注意别与重载混淆)
2、如果子类函数与父类函数同名,并且参数也相同,但是父类函数没有virtual 关键字。此时,父类的函数被隐藏(注意别与重写混淆,如果有virtual,那个是重写).

发布了53 篇原创文章 · 获赞 18 · 访问量 7226

猜你喜欢

转载自blog.csdn.net/Nire_Yeyu/article/details/102475350