在下面的示例中,我有我的父母班和两个孩子班。每个孩子的对象都存储在父对象的向量中。遍历向量,我只能看到父类的方法调用。请帮助我正确地定义方法定义和vtable,以及如何避免切片效果。求助,我已经在python上做了太长时间了,在这样的地方还是可以的。
#include <iostream> #include <vector> using namespace std; int main() { class A{ public: virtual string print(){return string("A");}; }; class B: public A{ virtual string print() final {return string("B");}; }; class C: public A{ virtual string print() final {return string("C");}; }; vector<A> v; v.push_back(B()); v.push_back(C()); for(auto x : v){ cout << x.print() << endl; } }
=>
$g++ -std=c++11 -o main *.cpp
$main
A
A
在下面的示例中,我有我的父母班和两个孩子班。每个孩子的对象都存储在父对象的向量中。遍历向量,我只能看到父类的方法调用。...
让我们看看您的代码: