c++ 纯虚析构函数

virtual ~A() = 0;

这就是一个纯虚析构函数,这种定义是允许的。

一般纯虚函数都不允许有实体,但是因为析构一个类的过程中会把所有的父类全析构了,所以每个类必有一个析构函数。

所以。纯虚析构函数需要提供函数的实现,而一般纯虚函数不能有实现

时间: 2024-12-31 03:54:33

c++ 纯虚析构函数的相关文章

虚析构函数(√)、纯虚析构函数(√)、虚构造函数(X)

from:http://blog.csdn.net/fisher_jiang/article/details/2477577 一. 虚析构函数 我们知道,为了能够正确的调用对象的析构函数,一般要求具有层次结构的顶级类定义其析构函数为虚函数.因为在delete一个抽象类指针时候,必须要通过虚函数找到真正的析构函数. 如: class Base{public:   Base(){}   virtual ~Base(){}};class Derived: public Base{public:   D

C++中的虚析构函数、纯虚析构函数详解

C++中析构函数可以为纯虚函数吗? 众所周知,在实现多态的过程中,一般将基类的析构函数设为virtual,以便在delete的时候能够多态的链式调用.那么析构函数是否可以设为纯虚呢? class CBase { public: CBase() { printf("CBase()\n"); } virtual ~CBase() = 0; // 析构函数是纯虚函数 }; 答案是可以,那么这样实现的目的是什么呢?当然是避免实例化. 但因为派生类不可能来实现基类的析构函数,所以基类析构函数虽然

构造函数、析构函数、虚析构函数、纯虚析构函数要点总结

1.派生类的构造函数.析构函数默认会调用基类的构造函数.析构函数. 顺序:基类构造.派生类构造:派生类析构,基类析构. 举例: 1 /****************************************************************************************************** 2 * File:Constructor&DestructorTest 3 * Introduction:测试构造函数.析构函数.虚构造函数与纯虚构造函数的一些

C++:探究纯虚析构函数以及实现数组的快速排序与链表的归并排序

C++:探究纯虚析构函数以及实现数组的快速排序与链表的归并排序 by 小威威 1.介绍 本篇博文将通过课后作业的(15 C++ Homework) D&A 5 Collection with Inheritance来讲解一些重要的排序与零散的知识.而且,本人以科学严谨的态度,对抽象类中析构函数的调用情况进行了分类讨论并一一试验,最终得出了"抽象类最好要定义纯虚析构函数"的结论,并不是凭空捏造,或者是从网上拷贝而来.但是,这仍然代表本人观点,不具有权威性,如有错误,欢迎大家批评指

为什么必须提供纯虚析构函数的定义

转载:http://blog.chinaunix.net/uid-25544300-id-3236826.html 部分修改,感谢博主! 在 某些类里声明纯虚析构函数很方便.纯虚函数将产生抽象类——不能实例化的类(即不能创建此类型的对象).有些时候,你想使一个类成为抽象类,但刚好又没有 任何纯虚函数.怎么办?因为抽象类是准备被用做基类的,基类必须要有一个虚析构函数,纯虚函数会产生抽象类,所以方法很简单:在想要成为抽象类的类里声明 一个纯虚析构函数. class awov { public: vi

C++ Primer 学习笔记_34_面向对象编程(5)--虚函数与多态(二):纯虚函数、抽象类、虚析构函数、动态创建对象

C++ Primer 学习笔记_34_面向对象编程(5)--虚函数与多态(二):纯虚函数.抽象类.虚析构函数.动态创建对象 一.纯虚函数 1.虚函数是实现多态性的前提 需要在基类中定义共同的接口 接口要定义为虚函数 2.如果基类的接口没办法实现怎么办? 如形状类Shape 解决方法 将这些接口定义为纯虚函数 3.在基类中不能给出有意义的虚函数定义,这时可以把它声明成纯虚函数,把它的定义留给派生类来做 4.定义纯虚函数: class <类名> { virtual <类型> <函

C++学习之路:纯虚函数

背景: 当有些方法无法继承,或者说无意义的时候,例如shape类,那么基类的接口便无法实现. 那么这时候就需要引入纯虚函数. 几何基类:       Shape 拥有Draw方法,三角,圆形,菱形等Draw方法各不相同.只能使用纯虚函数, 拥有纯虚函数的基类称为抽象类,抽象类无法被实例化,纯虚函数也不需要实现. @纯虚函数的定义 #纯虚函数一般不需要实现.   @抽象类   作用:抽象类作为抽象和设计的目的而声明,将有关的数据和行为组织在一个集成层次结构中,保证派生类具有要求的行为.   对于暂

纯虚函数

正常情况下纯虚函数类似于java中的抽象函数,只提供接口,不提供定义,由不同的子类提供不同的实现,从而表现出多态.但是也有两个特殊的情况. 情况一:纯虚函数也是可以有实现体的,只是由于不能建立基类的对象,因此不能直接调用,但是可以在子类中通过作用域解析操作符静态调用,因此可以在里面添加一些公共的代码,例如: class Base { public: virtual void fun1()=0; }; void Base::fun1() { cout << "Base::fun1&qu

虚析构函数的作用

1  class ITest 2  { 3  public: 4      virtual void Test() = 0; 5 6  }; 7 8  class CTest : public ITest 9  { 10 public: 11     CTest()  { printf("constructor.n"); }; 12     ~CTest() { printf("destructor.n"); }; 13     virtual void Test(