C++ 调用动态类型的方法,而不是静态类型的方法

C++ 调用动态类型的方法,而不是静态类型的方法,c++,type-conversion,C++,Type Conversion,我有一段话: #include <iostream> #include <vector> class A { public: void m() { std::cout << "hi"; } }; class B : public A { public: void m() { std::cout << "hello"; } }; int main() { std::vect

我有一段话:

#include <iostream>
#include <vector>

class A {
public:
    void m() {
        std::cout << "hi";
    }
};

class B : public A {
public:
    void m() {
        std::cout << "hello";
    }
};

int main() {
    std::vector<A*> v;
    v.push_back(new A);
    v.push_back(new B);
    v.push_back(new A);
    for (A *obj : v)
        obj->m();
}
#包括
#包括
甲级{
公众:
void m(){

std::cout基类函数应该是虚拟的,以便具有多态行为:

class A {
public:
    virtual void m() {  // <-- You missed this virtual
        std::cout << "hi";
    }
};
A类{
公众:

virtual void m(){//然后声明
virtual void m()
。如果您知道静态类型和动态类型,那么您肯定知道虚拟函数吗?
class B : public A {
public:
    void m() override {
        std::cout << "hello";
    }
};