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";
}
};