关于c++中的重写(覆盖)

1.父类声明并实现了一个虚函数。然后子类也实现了这个虚函数。 是否为覆盖? 2.假如一个父类声明一个虚函数,子类实现之后,为什么最后还返回父类的虚函数,意义何在?CPropertyPage是父类,CSummandPage是子类,OnSetActive是父类声明,子类实现的虚函数。实现如下: BOOL CSummandPage::OnSetActive() { return CPropertyPage::OnSetActive(); }

1
对的,这就叫覆盖

2
如子类的实现方法与父类的实现方法一样。则直接调用父类的方法,这样就实现了代码的精简。也省去了程序员的重复敲键盘之苦。如子类的实现方法与父类的实现方法不一样。则要重新复写OnSetActive这个方法。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-04
子类重写父类的虚函数就叫函数覆盖,子类有父类的同名非虚函数叫函数隐藏。
子类实现中只调用父类的该虚函数,确实没啥意义,可有可无,多余,其实此时子类可以不用重写该虚函数。

c++函数覆盖问题。
覆盖,英文是override,也译为重写。是子类重写基类的虚函数,从而使得子类中从基类集成的虚函数被覆盖不可见。而虚函数的多态就是通过这个方式来实现的。1.子类->fun将调用自己的fun,基类的fun被覆盖不可见。2.你这个问题说明你对覆盖的意思不明。应该说,子类中如果重写了基类的虚函数,那么该子类重...

C++ 覆盖与重写是不是一回事
覆盖与重写可以说是一样的,但与重载不同。override(重写)是指在不同作用域中,多个函数原型完全一样,而实现却不同的函数。在C++中,经常发生在类的继承中。当基类中的某个方法是virtual或pure virtual函数时(当然访问权限必须是public或protected,因为从C++设计思想上来讲private的函数不会是virtual...

C++:继承中的同名覆盖原则是什么意思?
当派生类与基类有相同成员时,例如:有一个基类Class A, A类里有个成员函数 int fun(),类B继承了类A,类B也有个成员函数,int fun(),在实现部分里,在调用下函数fun()下,由于基类和派生类的函数名一样,系统无法按原则(原则:先基类,然后对象,最后派生类)调用,就覆盖了。

c++重写为什么必须基类函数必须有virtual关键字
1. 必须有2. 因为在C++中,当一个派生类重写(覆盖)了基类的成员函数时,如果基类函数没有被声明为虚函数,那么在使用基类指针或引用调用该函数时,实际执行的是基类函数而不是派生类函数。这会导致无法实现多态性,违背了面向对象的设计原则。3. 如果基类函数被声明为虚函数,那么在使用基类指针或引...

C++里面,隐藏、覆盖两者有什么区别?
覆盖(也叫做多态)或者改写是指派生类重新实现或者改写了基类的成员函数,其特征是:1、不同的作用域(分别位于派生类和基类中)。2、函数名称相同。3、函数的参数也完全相同。4、基类必须有virtual关键字,子类则可有可无。5、若虚函数存在重载的情况,遵循基类而不遵循子类。6、构造函数中虚函数无效,...

C++ 派生类对基类成员的重定义和名字隐藏 是怎么回事啊?
看《C++对象模型》 里面有CPP的实现细节

c++的override关键字什么意思
是重载的意思,重载 了一个方法并且对其重写,以求达到不同的作用。C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而在实...

C++中重载与重写函数区别及虚函数
重载,多个方法使用同一个方法名,必须明确的可以识别应该调用哪个方法。重写函数和虚函数很像,重新函数就是重新实现某个函数。虚函数,虚函数分为两种,纯虚函数和虚函数。纯虚函数在集成时必须进行实现【重写覆盖】,而虚函数可以不用重写【如果重写了,则覆盖掉原函数】。

C++11关键字:override 和 final
在C++编程中,多态行为的核心在于基类声明虚函数,而派生类则能通过覆盖该虚函数来实现特定行为。然而,在C++11之前,对于虚函数的正确覆盖缺乏有效的机制,可能导致两个常见的错误:无意的重写和虚函数签名不匹配。无意的重写指的是在派生类中,可能无意中声明了与基类某个虚函数具有相同签名的成员函数...

override是什么意思啊?
在计算机编程领域,override通常指的是重写或覆盖。它是一种实现面向对象编程的方法,用于在派生类中重新定义基类中已有的方法或函数,使之具有更为特定的表现,从而满足子类的需求。简而言之,override是在子类中用新的方法来替换父类中的同名方法的过程。override对于软件开发而言是一种十分重要的技术。它...

相似回答
大家正在搜