`
tianyalinfeng
  • 浏览: 443052 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

析构函数和虚函数的用法和作用

    博客分类:
  • C++
阅读更多

置于“~”是析构函数;析构函数因使用"~"符号(逻辑非运算符),表示它为腻构造函数,加上类名称来定义。
;析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调用。
有适放内存空间的做用!

虚函数是C++多态的一种表现
例如:子类继承了父类的一个函数(方法),而我们把父类的指针指向子类,则必须把父类的该函数(方法)设为virturl(虚函数)。
使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价。

如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virturl 函数名=0
我们把这样的函数(方法)称为纯虚函数。
如果一个类包含了纯虚函数,称此类为抽象类

分享到:
评论

相关推荐

    虚析构函数示例

    通常,`test_virtual_fun.h`会定义类结构,而`test_virtual_fun.cpp`则会实现这些类的方法,包括构造函数和析构函数,并进行一些测试用例以展示虚析构函数的效果。 在实际编程中,如果你的基类被设计用来作为其他类...

    C++箴言:避免析构函数调用虚函数[归类].pdf

    在C++编程中,有一条重要的原则是避免在构造函数或析构函数中调用虚函数。这条箴言尤其对那些从C#或Java转向C++的开发者来说可能显得有些反直觉,因为在这些语言中,这样的调用通常是允许的。然而,在C++中,这样做...

    简要解读C++的动态和静态关联以及虚析构函数

    如果不声明析构函数为虚函数,只会调用基类的析构函数,派生类的部分资源可能得不到正确释放,导致内存泄漏或其他问题。 在内存管理中,如果使用new创建的对象,需要通过delete来释放。如果基类指针指向一个派生类...

    用C++实现虚函数

    本文将深入探讨如何使用C++实现虚函数,包括虚函数的基本用法、虚析构函数的概念以及如何计算类的大小。 首先,虚函数的声明是在基类的定义中完成的,通过在函数声明前加上`virtual`关键字。例如: ```cpp class ...

    详解C++中的析构函数

    在C++编程语言中,析构函数是一种特殊类型的成员函数,它的主要职责是在对象生命周期结束时执行清理工作。析构函数没有返回值,也不接受任何...合理使用析构函数、理解其作用和机制,是编写高效、健壮的C++代码的基础。

    x86逆向 - 虚函数1

    由于析构函数会在执行前更新虚表指针,因此析构函数、虚表和析构代理之间形成了一个循环引用的模式。 通过分析虚表的引用,逆向工程师可以跟踪构造函数的调用,从而定位到程序中的对象实例。这种技术在逆向分析复杂...

    华为笔试内部资料

    这些知识点深入探讨了C++中关于类的继承、虚函数、析构函数、内存管理和函数调用机制的核心概念,对于理解面向对象编程的高级特性具有重要意义。通过学习和掌握这些知识,开发者能够更有效地设计和实现复杂的数据...

    c#析构构造函数c#析构构造函数c#析构构造函数

    在某些情况下,如果你确实需要使用析构函数,记得在类声明前添加`[SuppressFinalize]`属性,这样可以通知垃圾回收器无需调用`Finalize()`方法(这是析构函数在.NET中的另一个名字),因为资源的清理工作已经在析构...

    c++多态性与虚函数练习题

    #### 二、虚函数的作用及其使用方法 虚函数是一种特殊的成员函数,它可以在派生类中被重写。当通过基类的指针或引用调用一个虚函数时,会自动调用相应派生类的版本。这样就实现了运行时的多态性。 ##### 定义虚函数...

    虚函数.ppt

    4. **虚析构函数**:为了确保在删除基类指针指向的对象时能正确执行派生类的析构函数,析构函数默认被视为虚函数。这样做可以防止内存泄漏和资源未释放的问题。 5. **虚继承**:在多继承场景下,为了避免“钻石问题...

    C++构造函数和析构函数顺序

    在C++编程中,构造函数和...总之,理解C++中构造函数和析构函数的调用顺序以及何时使用虚析构函数是编写健壮和可维护的代码的关键。遵循这些规则,可以确保对象正确初始化并释放资源,避免潜在的内存问题和异常行为。

    虚函数的使用技巧.rar_C++虚函数_虚函数

    虚函数使得子类能够重写父类的方法,从而在运行时根据对象的实际类型调用正确的方法,而不是编译时的类型。下面将详细探讨虚函数的使用技巧。 1. **虚函数声明**: 在C++中,通过在函数声明前加上`virtual`关键字...

    虚函数概念用法的小程序

    本文将通过几个小程序实例来深入探讨虚函数的基本概念及其使用方法。 #### 虚函数基础 首先,我们来看一个简单的示例,该示例展示了如何定义和使用虚函数: ```cpp #include using namespace std; class A { ...

    有关虚函数的测试用例

    `Virtual_ABC_Ex`可能是进一步探讨虚函数的一个例子,包括抽象类(使用`=0`声明的虚函数,意味着必须在派生类中实现)、纯虚函数的用法,以及如何利用虚函数来设计接口。它可能还会涉及虚析构函数,这是非常重要的...

    一起学C#:构造函数和析构函数.rar

    2. **非虚函数**:析构函数是非虚的,这意味着不能通过继承链来调用它,只能由垃圾回收器在对象即将被销毁时调用。 3. **无需调用**:与构造函数不同,程序员不需要显式调用析构函数,它会在对象生命周期结束时自动...

    Java与C++在虚函数,纯虚函数上的区别

    这样做的原因是,如果一个基类指针指向一个派生类对象,且析构函数是虚函数,那么当基类指针被销毁时,会正确地调用派生类的析构函数,而不是仅仅调用基类的析构函数。如果不这样做,可能会导致资源泄漏或其他问题,...

    虚函数和纯虚函数.pdf

    虚函数(virtual function)和纯虚函数(pure virtual function)是多态性(polymorphism)实现的关键技术,它们支持程序设计中的一种重要特性,即可以使用指向派生类的基类指针来调用相应派生类的方法,从而实现...

    用链表实现队列栈 包括虚函数、指针

    总结起来,这个程序使用链表实现了队列和栈两种数据结构,利用虚函数和指针实现了面向对象编程中的多态和动态内存管理,同时通过虚析构函数确保了资源的正确释放。这样的设计使得代码更加模块化,易于扩展和维护。

    虚函数表解析

    数组的第一个元素通常用于存储指向类的析构函数的指针,以便在对象销毁时能够正确地调用析构函数。此外,数组中还可能包括一个特殊的标记,用于标识虚函数表的结尾,这有助于编译器确定虚函数的数量。 在实际的程序...

    C#程序设计基础(7)

    在13-Destructor(2).swf这一章节中,讲解了析构函数的基本用法和工作原理。通常,当一个对象的引用计数降为零,即没有任何引用指向该对象时,垃圾回收器就会开始工作。析构函数在此时被调用,确保对象占用的资源得到...

Global site tag (gtag.js) - Google Analytics