【发布时间】:2016-07-13 02:55:40
【问题描述】:
#include <iostream>
using namespace std;
/*
* base class
*/
class A
{
public:
A()
{
this->init();
}
virtual void init()
{
cout << " A";
}
// in public, so class B can call it.
void testit()
{
this->init();
}
};
/*
* child class
*/
class B : public A
{
public:
B()
{
this->init();
}
virtual void init()
{
// here get segmentation fault.
// but if call A::init() then it is ok.
A::testit();
// if call A::init(); then it working.
cout << "B" ;
}
};
int main()
{
B b;
A * a = &b;
// here B virtual function will be called.
a->init();
return 0;
}
基本上这是一个虚拟功能测试。但是我发现当子类在自己的虚函数中调用基类函数时,会出现运行时分段错误。为什么?
在这里,当运行时它在 A::testit() 处出现分段错误 但为什么?
为什么子实例调用基函数会出错?
【问题讨论】:
标签: c++ segmentation-fault runtime-error virtual-functions