万丈高楼平地起——设计虚类请注意

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在定义虚类尤其是纯虚类时,请注意将虚类的析构函数设计为虚拟函数,否则其子类实例的内存释放操作将不正常。如:

Packets.h

#include

class CPacket

{

public:

virtual ~CPacket() {};

virtual void Initialize() = 0;

...

};

class CDeliverPacket: public CPacket

{

public:

virtual ~CDeliverPacket() {std::cout << "CDeliverPacket Destroy" << std::endl;};

virtual void Initialize() {std::cout << "CDeliverPacket Initialize" << std::endl;};

};

main.cpp

#include "Packets.h"

int main(int argc, char **argv)

{

CPacket *pPacket = new CDeliverPacket();

pPacket->Initialize();

delete pPacket;

}

输出:

CDeliverPacket Initialize

CDeliverPacket Destroy

蓝色的代码看似无用,但如果没有那一行将不会调用显示CDeliverPacket Destroy等代码。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航