記述するソースコード量が増えるのでどうしようかずっと悩んでいたのだが仮想関数を使えばぐっと減りそうだ。
class A {
public:
virtual void func() = 0;
};
class B: public A {
public:
void func() { printf("B\n"); }
};
class C: public A {
public:
void func() { printf("C\n"); }
};
main()
{
B *pb = new B;
C *pc = new C;
A *pa;
pa = pc;
pa->func();
pa = pb;
pa->func();
}
実行すると、C、Bの順で文字が出力されます。paに代入されているクラスのポインタの型を気にしなくてよいのが素晴らしい。
コメント