我是C++的初学者,这些天我正在研究虚函数.有些问题让我很困惑.
例如:
class A {
public:
virtual void f() {
//do something;
}
}
class B: public A {
public:
virtual void f() {
//do something;
}
}
Run Code Online (Sandbox Code Playgroud)
class A包含一个虚函数f(),并class B继承它.在里面class B,该函数f()也被声明为虚拟,所以这意味着f()在class B重载f()中class A?它是否允许继承的类B重载f()?抑或B定义一个新的虚拟功能,该功能从不同f()的class A?
虚函数提供了一种重载方法的方法.如果B继承A并且没有声明f()as virtual,那么可以C继承B重载的类f()并实现多态吗?
在B类内部,函数f()也被声明为virtual,那么这是否意味着B类中的f()重载A类中的f()
不,它不会超载。它覆盖. 此外,该关键字virtual在 class 中是可选的B。无论您是否编写,B::f()它始终是一个函数。virtualvirtual
当您定义具有相同名称但不同参数的函数时,将使用术语“重载” 。在您的情况下,两个类中的函数签名完全相同,这意味着它没有重载;派生类基本上覆盖了的基类定义。ff()