2007年6月20日水曜日

仮想関数(virtual)

テストプログラム作成したので貼り付けとこっと
C++のメンバメソッドにvirtual付けたときと付けない時の動作確認
C言語には無い概念…これめっちゃ便利やね。
一応関数ポインタを使えばC言語でも作れるんやけどめんどい!

--------------

#include

class Base {
public:
Base(){};
virtual ~Base(){};
void print();
virtual void vprint();
};

void Base::print()
{
printf("Base printf \n");
}
void Base::vprint()
{
printf("Base virtual printf \n");
}

class Foo :public Base {
public:
Foo(){};
virtual ~Foo(){};
void print();
virtual void vprint();
};

void Foo::print()
{
printf("Foo printf \n");
}
void Foo::vprint()
{
printf("Foo virtual printf \n");
}

int main (void) {
Foo* instanceFoo = new Foo();
Base* instanceBase = (Base*)instanceFoo;
printf("instance Foo\n");
instanceFoo->print();
instanceFoo->vprint();
printf("instance Base\n");
instanceBase->print();
instanceBase->vprint();
return 0;
}

--------------

0 件のコメント:

ラベル