在多继承后,使用delete导致断点问题,谁能帮帮忙哇
具体情况:
#include <iostream>
using namespace std;
//零件抽象基类
class AbstractCPU
{
public:
virtual void func() = 0;
};
class AbstractDisplayCard
{
public:
virtual void func() = 0;
};
class AbstractMemoryChip
{
public:
virtual void func() = 0;
};
//厂商
class FactoryIntel:public AbstractCPU, public AbstractDisplayCard, public AbstractMemoryChip
{
public:
virtual void AbstractCPU::func()
{
cout << "CPU by FactoryIntel " << endl;
}
virtual void AbstractDisplayCard::func()
{
cout << "DisplayCard by FactoryIntel " << endl;
}
virtual void AbstractMemoryChip::func()
{
cout << "MemoryChip by FactoryIntel " << endl;
}
};
//电脑类
class Computer
{
public:
Computer(AbstractCPU * cpu, AbstractDisplayCard* dis, AbstractMemoryChip* mem)
{
m_cpu = cpu;
m_dis = dis;
m_mem = mem;
}
//析构函数释放零件
~Computer()
{
if (m_cpu != NULL)
{
delete m_cpu;
m_cpu = NULL;
}
if (m_dis != NULL)
{
delete m_dis;
m_dis = NULL;
}
if (m_mem != NULL)
{
delete m_mem;
m_mem = NULL;
}
}
void doWork()
{
m_cpu->func();
m_dis->func();
m_mem->func();
}
private:
AbstractCPU *m_cpu;
AbstractDisplayCard* m_dis;
AbstractMemoryChip* m_mem;
};
void test()
{
AbstractCPU* cpu = NULL;
AbstractDisplayCard* dis = NULL;
AbstractMemoryChip* mem = NULL;
cout << "comp1 : " << endl;
cpu = new FactoryIntel;
dis= new FactoryIntel;
mem = new FactoryIntel;
Computer* comp1;
comp1 = new Computer(cpu, dis, mem);
comp1->doWork();
delete comp1; //这就报错了????
}
int main()
{
test();
system("pause");
return 0;
}