c++只有虚函数才能被重写吗

如题所述

没有virtual 关键字的情况下派生类有和基类相同的函数时直接覆盖(覆盖和重写不同,重写是事先就知道派生类可能重写该函数)基类的,不构成重写但达成效果类似。所以只有虚函数才能被重写。
温馨提示:内容为网友见解,仅供参考
无其他回答

c++只有虚函数才能被重写吗
没有virtual 关键字的情况下派生类有和基类相同的函数时直接覆盖(覆盖和重写不同,重写是事先就知道派生类可能重写该函数)基类的,不构成重写但达成效果类似。所以只有虚函数才能被重写。

C++编程中 子类(派生类)能不能重写父类(基类)的函数(方法),除了虚函数...
当然可以重写,函数名和参数保持一致就会重写;如果函数名一样,参数不一样则是隐藏;总之,非虚函数,只要子类定义了相同名称的,父类函数都不能直接访问。这样的问题,自己写个Test自然明了,印象也会更深刻。

C++中重载与重写函数区别及虚函数
虚函数,虚函数分为两种,纯虚函数和虚函数。纯虚函数在集成时必须进行实现【重写覆盖】,而虚函数可以不用重写【如果重写了,则覆盖掉原函数】。

C++类体系中,析构函数能重载?
不能重载析构函数,只能声明为虚函数,为了多态发生时能够完全析构。只有构造函数才能重载,用于多种方式构造对象。如果通过基类指针动态构造公有派生类对象,再通过基类指针来动态释放该对象就会发生这个问题,原因和过程很多教科书上都有,此时,基类的析构函数就要定义为virtual 型的了。

c++里面构造函数为什么不能是虚函数?? 跟虚函数表有关系吗?
楼上说的不全吧,只有纯虚类才无法实例化。至于不能为虚函数,我的理解是:构造函数是给类初始化调用的,明白点说就是给类中的成员变量赋初始值。如果构造函数是虚函数,意味着肯能被重载,也就是在子类实例化的时候给父类初始化时是调用子类重载的函数,先不管合不合法,要想初始化父类,就需呀...

c++中的虚函数是什么?
C++中的虚函数是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多...

函数隐藏函数的覆盖和隐藏的区别举例
在C++中,函数的覆盖和隐藏是两个关键概念,它们在继承和多态性中起着重要作用。函数覆盖是指派生类中对基类中的虚函数进行重写,而隐藏则是指派生类中存在与基类同名但非虚函数的情况,导致基类的同名函数被遮盖。函数覆盖的条件包括:基类的函数必须声明为虚函数(使用virtual关键字),派生类和基类中...

C++父类中声明了一个虚函数以后 是不是在子类 以及子类的子类中 都要...
基类声明虚函数只是提供一个接口,也就是实现多态的关键,子类基本都要继承的,如果有一个子类不需要实现这个函数,说明你的继承关系有问题,最好改变一下继承体系

C++多态性。 基类的虚函数和重载函数的区别,是不是一个是在运行时发生...
虚函数则是, 基类的虚函数,很可能被重载,用基类指针和引用调用虚函数时,如果该指针或引用实际指向或代表的对象是派生类的对象,并且该派生类重载了该虚函数,则调用的就是派生类重载了的虚函数,而不是基类的虚函数。这就是面向对象中的多态在C++中的实现方式了。虚函数就是期待派生类重载的函数。

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

相似回答