写出下列程序的运行结果,并判断是否有bug,如果有,如何改正?
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
class CA
{
public:
CA();
~CA();
virtual void fun1()
{
printf("CA::fun1()\n");
}
void fun2()
{
fun1();
printf("CA::fun2()\n");
}
};
class CB : public CA
{
public:
CB()
{
buf = new unsigned char[20];
}
~CB()
{
if (buf!=NULL)
{
delete [] buf;
}
}
virtual void fun1()
{
printf("CB::fun1()\n");
}
void fun2()
{
fun1();
printf("CB::fun2()\n");
}
private:
unsigned char *buf;
};
int _tmain(int argc, _TCHAR* argv[])
{
CA *pA = new CB();
pA->fun1();
pA->fun2();
delete pA;
return 0;
}
答:
CA 的构造函数和析构函数没有实现,
修正:
CA(){};
~CA(){};
输出结果:
CB::fun1()
CB::fun1()
CA::fun2()