重複の可能性:
仮想関数オブジェクトのスライス
考えてみましょう:
#include <vector>
#include <iostream>
using namespace std;
struct A {
virtual void do_it() { cout << "A" << endl; }
};
struct B : public A {
virtual void do_it() { cout << "B" << endl; }
};
int main() {
vector<A> v;
v.push_back(B());
v[0].do_it(); // output is A
}
どの関数が呼び出されますか?基本的に、スライスが存在しない場合、ポインターなしでポリモーフィズムを使用することは可能ですか?