Sri*_*nth 1 c++ polymorphism inheritance segmentation-fault
我还在学习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();
}
Run Code Online (Sandbox Code Playgroud)
另外,如果您对在Java中了解这些概念的人一般有关于继承和多态的使用的任何其他提示,请告诉我.谢谢!
name - 在Base中未初始化
你还有另一个问题:
Base c = Child("2");
Run Code Online (Sandbox Code Playgroud)
我不认为这是你想要的.您的代码将从已铸造的Child创建Base实例.但我认为您希望使用基于Base接口的Child实例; 你应该写:
Base *c = new Child("2");
Run Code Online (Sandbox Code Playgroud)
另外,为了避免将来出现错误,请将基础中的析构函数声明为虚拟.