私はまだ C++ を学んでいます。ポリモーフィズムがどのように機能するかを試していたところ、仮想メソッドを呼び出すときにセグメンテーション違反が発生しました。
(注:デストラクタを仮想としてマークしませんでした。何が起こるかを確認しようとしていました。)コードは次のとおりです。
#include <iostream>
using namespace std;
class Base
{
protected:
char *name;
public:
Base(char *name)
{
cout << name << ": Base class cons" << endl;
}
~Base()
{
cout << name << ": Base class des" << endl;
}
virtual void disp();
};
void Base::disp()
{
cout << name << ": Base disp()" << endl;
}
class Child : public Base
{
public:
Child(char *name):
Base(name)
{
cout << name << ": Child class cons" << endl;
}
~Child()
{
cout << name << ": Child class des" << endl;
}
virtual void disp()
{
cout << name << ": Child disp()" << endl;
}
};
int main()
{
//Base b;
//b.disp();
Base c = Child("2");
c.disp();
}
また、Java でこれらの概念を知っている人のために、一般的な継承とポリモーフィズムの使用法に関するその他のヒントがあれば、私に知らせてください。ありがとうございました!