c++ - 这个继承类会调用哪个方法(虚函数)? C++

标签 c++ inheritance virtual

假设我有一个基类

class Base
{

public:
void A() {do stuff};
void B() {A(); do stuff};
};

和派生类

class Derived : public Base
{
public:
void A() {do things}
};

Derived derived1;
derived1.B();

B会调用基类的A还是派生类的A?

我怀疑 B 会调用基类的 A,为了让它使用新的重新定义的 A,我必须将其设为虚拟:

class Base
{

public:
virtual void A() {do stuff};
void B() {A(); do stuff};
};

这样对吗?这就是虚函数的用途吗?

最佳答案

是的,两方面都正确...

关于c++ - 这个继承类会调用哪个方法(虚函数)? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16026629/

相关文章:

c++ - 将 void* 转换为具有多重继承的类

c++ - 调用了虚函数,使用了父函数

c++ - 调用 VS12 std::transform?

c++ - 哪一位是第一位,当你位移时,它实际上是朝那个方向移动的吗?

node.js - 静态方法的 Mongoose 继承

c++ - 我可以在这里使用 Curiously Recurring Template Pattern (C++) 吗?

c++ - 所引用对象的动态类型何时可以改变?

c++ - 编译opencv例子麻烦

C++ 拥有 myMethod(Thing& a) 或 myMethod(Thing a) 之间的确切区别?

python - super(subclass, class).__new__(class) 是做什么的?