仮想関数(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 件のコメント:
コメントを投稿