【发布时间】:2021-05-09 01:04:34
【问题描述】:
所以,如果我有
class base
{
public:
virtual void start();
virtual void stop();
void doSomething() { start(); .... stop(); }
}
class derived : public base
{
public:
void start();
void stop();
}
调用derived.doSomething() 将调用derived::start() 和derived::stop()。
但这仅在它们是虚拟的情况下才有效。
我想知道为什么没有virtual 关键字就不能工作,这意味着较低级别的细节。我在网上找不到太多关于此的信息...
谢谢!
【问题讨论】:
-
我可以在虚函数上推荐cppreference.com article。
-
如果没有
virtual,它将无法工作,因为virtual是您告诉基类该函数可能在派生类中被覆盖的方式,从而在运行时确定要调用的版本。因此,这个问题实际上是一个重言式。没有使它起作用的东西,它就不起作用!我相信网上一定有很多关于这方面的资源。
标签: c++ overriding virtual vtable