`

继承与virtual析构

阅读更多
// author :xserver

#include <iostream>
#include <string>
using namespace std;

class A
{
    int a;
public:
    A(int x):a(x){cout << "create A\t" << x << endl;}

    A(){    cout << "create A" << endl;}

//    ~A(){   cout << "delete A\t" << this->a << endl;}         //  子类无析构行动
    virtual ~A(){   cout << "delete A\t" << this->a << endl;}   //  子类的也会跟着析构

};

class B:public A
{
    int b;
public:
    B(int x):b(x){cout << "create B\t" << x << endl;}
    B(){    cout << "create B" << endl;}
    ~B(){   cout << "delete B\t" << this->b << endl;}
};



int main(int argc, char *argv[])
{
    A* a = new B(5);

    delete a;

    return 0;
}

分享到:
评论

相关推荐

    C++析构函数使用virtual的原因

    1. **多态性与析构** 当一个类作为基类时,它的派生类可能使用`new`关键字动态创建对象。若基类的析构函数不是虚的,当使用指向基类的指针删除派生类对象时,仅会调用基类的析构函数,而忽略派生类的析构函数。这...

    派生类的构造与析构_派生类的构造与析构_

    在实际编程中,派生类的构造与析构机制对于实现多态性和继承关系至关重要。例如,在游戏开发中,可以有一个基本的“游戏对象”类,然后派生出“角色”、“敌人”等具体类,每个类都有其特定的构造和析构逻辑。通过...

    实验四、类的继承与派生 类的继承与派生

    类的继承与派生是面向对象编程中的核心概念,它允许我们创建新的类,这些新类基于现有的类(称为基类或父类),并可以扩展或修改基类的功能。在这个实验中,我们将深入理解这个过程,并通过实际代码来演示继承和派生...

    C++中的virtuals

    在C++编程中,`virtual`关键字是实现多态性(Polymorphism)的关键机制,这对于理解和编写面向对象的代码至...理解并熟练运用`virtual`函数、构造函数和析构函数的特性,以及继承和重写,是掌握C++面向对象编程的基础。

    C++继承与派生

    ### C++继承与派生详解 #### 5.1 继承与派生的概念 **5.1.1 为什么要使用继承** 继承是面向对象编程中的一个核心概念,它允许新类从现有类那里获得其属性和行为。这种机制不仅提高了代码的复用性,还增强了软件的...

    c++继承与派生的相关资料

    C++的继承与派生是面向对象编程的重要概念,允许类之间的层次结构和代码复用。通过公有、私有和保护继承,可以控制成员的访问权限。派生类继承基类的特性,并可以添加新的成员和功能,同时需要处理构造函数和析构...

    C++程序设计教程之继承与派生

    在C++程序设计中,继承与派生是面向对象编程的核心概念,它们允许开发者构建复杂的类层次结构,实现代码的重用和扩展。本章主要讲解了以下几个关键知识点: 1. **继承的概念**:继承是一种机制,使得一个新类(派生...

    C++继承与派生课件

    本课件主要讲解了继承与派生的基本概念、使用方法,包括构造函数与析构函数在继承中的作用,以及如何处理多继承和二义性问题,还有虚基类的应用。 首先,继承是C++中类之间的一种关系,一个类(派生类)可以从另一...

    C++虚拟多重继承对象模型讨论-样例

    在C++编程语言中,虚拟多重继承(Virtual Multiple Inheritance,VMI)是一种高级特性,它允许一个类从多个基类继承,其中一个或多个基类可能是通过其他基类间接继承的。这种继承方式的主要目的是解决“菱形问题”...

    C++继承与多态课件

    **第三讲——继承与派生**可能涵盖了如何声明和使用继承的类,包括访问修饰符的影响,构造函数和析构函数的调用顺序,以及派生类如何重写或扩展基类的方法。此外,还可能涉及了继承层次结构中的成员访问规则,比如...

    C++虚拟继承举例及其代码

    在C++编程语言中,虚拟继承(Virtual Inheritance)是一种特殊的继承方式,它解决了一类称为“菱形问题”或多继承中的二义性问题。在本篇内容中,我们将深入探讨虚拟继承的概念、作用以及如何在实践中应用。通过一个...

    实验三 类的继承与派生的应用.docx

    这里的关键是使用虚继承(`virtual public vehicle`),以避免在有多个继承路径到相同基类时出现二义性问题。如果不把`vehicle`设置为虚基类,当一个类同时继承自两个间接包含`vehicle`的类时,会产生多份`vehicle`...

    实验8 继承与派生.doc

    继承与派生 继承是 C++ 语言的一种重要机制,它允许在已定义的类的基础上产生新类。从已定义类产生新类的过程称为派生。已存在的用来派生新类的类为基类,又称父类。从已存在的类派生出的新类称为派生类,又称为...

    -派生类与继承.

    4. **虚基类(virtual base class)**:当多个派生类共享同一个基类时,为避免多继承导致的二义性,可以使用虚基类。这样,无论基类被继承多少次,派生类中只包含一个基类子对象。 实验内容包括编写和调试程序,以...

    c++继承分类

    2. 构造函数和析构函数的处理:讨论如何在继承链中调用构造函数和析构函数,以及如何避免内存泄漏。 3. 覆盖和虚函数:解释`virtual`关键字的作用,以及如何使用`override`关键字确保正确覆盖父类方法。 4. 多态性...

    继承设计练习

    8. **继承中的构造与析构** 当一个子类对象被创建时,首先调用基类的构造函数,然后是子类的构造函数。相反,析构顺序是子类的析构函数先于基类的析构函数。注意,基类的析构函数默认是非虚的,如果需要在基类析构...

    c++第八章 继承与多态课件ppt

    派生类需要定义自己的构造函数和析构函数,因为它们不从基类继承这两个特殊成员函数。派生类构造函数需要调用基类的构造函数,通常通过成员初始化列表来完成。析构函数同样需要处理派生类特有的资源释放,即使基类的...

    浅谈C++中virtual的三种用法

    本文将详细介绍C++中virtual的三种用法,分别是虚函数、虚继承和虚析构。 一、虚函数 虚函数是一种特殊的成员函数,它可以被派生类重写。虚函数的主要特点是可以在编译时不知道实际调用的对象类型,而是在运行时...

Global site tag (gtag.js) - Google Analytics