C++のvirtualについて
C++の仮想関数(virtual)について忘れっぽいので、備忘しておく
コード1(virtualが付かない場合)
#includeusing namespace std;
class CBase
{
public:
void print(){ cout << "CBase::print" << endl; }
};class CChild : public CBase
{
public:
void print(){ cout << "CChild::print" << endl; }
};int main()
{
CBase base;
base.print();CChild child;
child.print();CBase* base2 = &child;
base2->print();return 0;
}
コード2(virtualが付く場合)
#includeusing namespace std;
class CBase
{
public:
virtual void print(){ cout << "CBase::print" << endl; }
};class CChild : public CBase
{
public:
void print(){ cout << "CChild::print" << endl; }
};int main()
{
CBase base;
base.print();CChild child;
child.print();CBase* base2 = &child;
base2->print();return 0;
}
コード1の実行結果
CBase::print
CChild::print
CBase::print
コード2の実行結果
CBase::print
CChild::print
CChild::print
Javaは全ての関数にvirtualが付くらしいから、C++でも有無を言わさずつけるべき????
備考:昔参考にしたURL