干净 清爽 丰富 免费

收藏本站
网站地图
RSS地图
Q您现在的位置: 首页>论文中心>毕业论文>>文章内容  
定义纯虚析构函数(purevirtualdestructor)


virtualintopen(cotstring&path,intmode=0x666)=0;
virtualintclose()=0;//...
};
但是,在某些情况下,我们却需要定义一个纯虚成员函数,而不仅仅是声明它。最常见的例子是纯虚析构函数。在声明纯虚析构函数时,不要忘了同时还要定义它。
claFile//atractcla
{
public:
virtual~File()=0;//declarationofapurevirtualdtor
};
File::~File(){}//definitionofdtor
为什么说定义纯虚析构函数是非常重要的
派生类的析构函数会自动调用其基类的析构函数。这个过程是递归的,最终,抽象类的纯虚析构函数也会被调用。
如果纯虚析构函数只被声明而没有定义,那么就会造成运行时(runtime)崩溃。(在很多情况下,这个错误会出现在编译期,但谁也不担保一定会是这样。)纯虚析构函数的哑元实现(dummyimplementation,即空实现)能够保证这样的代码的安全性。
claDiskFile:publicFile
{
public:
intopen(cotstring&pathname,intmode);
intclose();
~DiskFile();
};
File*pf=newDiskFile;
//...
deletepf;//OK,ultimatelyinvokesFile::~File()
在某些情况下定义其它纯虚成员函数可能也是非常有用的(比如说在调试应用程序以及记录应用程序的日志时)。例如,在一个不应该被调用,但是由于一个缺陷而被调用的基类中,如果有一个纯虚成员函数,那么我们可以为它提供一个定义。
claAtract
{
public:
virtualintfunc()=0;
//..
};
intAtract::func()
{
std::cerr<<"gotcalledfromthread"<"at:"<这样,我们就可以记录所有对纯虚函数的调用,并且还可以定位错误代码;不为纯虚函数提供定义将会导致整个程序无条件地终止。
--------------------------------------------------------------------------------
本文作者:DayKalev是一位系统分析员、软件工程师,他具有14年在C 和面向对象设计方面的经验。


  • 上一篇:没有了   下一篇:网络技术在分布式测试系统上的应用
  •  【 加入收藏】【打印此文】【关闭窗口

    最新文章
    ·定义纯虚析构函数(purevirtualdestructor)
    ·网络技术在分布式测试系统上的应用
    ·会计国际协调的市场反应假说
    ·在DOS实模式下直接存取4GB内存
    ·计算机基础知识试题
    ·物资管理信息系统开发
    ·实现在Windows下直接读写内存的方法
    ·电子商务终极是平台搜易得探索B2C新模式
    ·基于Web的多媒体CAI课件开发过程中若干问题的研究和实践
    ·计算机应用术语小释
    相 关 文 章 Top25
    ·定义纯虚析构函数(purevir
    ·网络技术在分布式测试系统
    ·会计国际协调的市场反应假
    ·在DOS实模式下直接存取4GB
    ·计算机基础知识试题
    ·物资管理信息系统开发
    ·实现在Windows下直接读写内
    ·电子商务终极是平台搜易得
    ·基于Web的多媒体CAI课件开
    ·计算机应用术语小释
    ·为什么不选择电子商务
    ·基于信息技术的研究性学习
    ·电子商务下的中国租赁业发
    ·关于CD-ROM媒体教材中交互
    ·《计算机应用》考试大纲
    ·遗传算法在试题组卷中的应
    ·LINUX高手经验:LINUX常见
    ·房地产建设中的网络安全与
    ·网上订房之我见
    ·光缆开剥与接续多媒体课件
    ·电脑的日常维护与故障诊断
    ·素质教育、建构主义与网络
    ·HSKwebsitetakesonanewlook
    ·大学生消费调查报告2
    ·毕业论文写作知识


    联系我们 | 友情链接 | 网站地图 |