C++ 析构函数2025 年 8 月 29 日 | 6 分钟阅读 在 C++ 编程语言中,析构函数的作用与构造函数正好相反。它用于销毁类的对象。在一个类中只能定义一次。像构造函数一样,它也会自动调用。 析构函数被定义为构造函数。它必须与类同名。但它的前缀是波浪号(~)。 注意:C++ 析构函数不能有参数。此外,修饰符不能应用于析构函数。语法在C++ 编程语言中,析构函数在每个类中都自动可用,但我们可以通过以下语法重新定义它们。 其中
与类的任何其他成员函数类似,我们也可以在类外部声明析构函数 C++ 析构函数示例让我们举一个例子来说明 C++ 中自动调用的构造函数和析构函数。 示例编译并运行输出 Constructor Invoked Constructor Invoked Destructor Invoked Destructor Invoked 说明 在这个例子中,我们创建了一个 Employee 类,它有一个构造函数和一个析构函数。当在 main() 函数中创建两个对象(e1 和 e2)时,构造函数被调用两次。当程序结束时,析构函数会按照它们创建的相反顺序自动为这两个对象调用。 什么时候需要编写用户定义的析构函数?如果我们在类中定义了析构函数,编译器会自动为程序生成一个默认的析构函数。默认析构函数是完美的,除非我们在类中有动态分配的内存或指针。在这种情况下,需要一个自定义析构函数来释放内存并防止内存泄漏。 C++ 中用户定义的析构函数示例让我们举一个例子来说明 C++ 中用户定义的析构函数。 示例编译并运行输出 Constructor: Memory allocated for name Student Name: David Destructor: Memory deallocated for name 说明 在这个例子中,我们创建了一个 Student 类,它为名称动态分配内存。之后,构造函数复制名称,析构函数解除分配为其分配的内存。在 main() 函数中,声明、打印并自动清理名为“David”的对象。 C++ 中的虚析构函数在 C++ 中,虚析构函数是一种未定义行为,主要用于通过基类指针对象删除派生类对象。基类析构函数使用 virtual 关键字,确保基类和派生类析构函数在运行时都被调用,但它首先调用派生类,然后调用基类,以释放两个析构函数占用的空间。 C++ 中的虚析构函数示例让我们举一个例子来说明 C++ 中的虚析构函数。 示例编译并运行输出 Base Constructor Derived Constructor Derived Destructor Base Destructor 说明 在这个例子中,我们创建了一个带有虚析构函数的基类和一个从它继承的派生类。之后,一个指向基类的指针指向一个派生类的对象。当删除它时,派生析构函数和基析构函数都被调用,因为基析构函数被声明为虚函数,因此继承中的清理是正确的。 纯虚析构函数在 C++ 编程中,纯虚析构函数是一种特殊的析构函数,在抽象基类中使用 = 0 语法声明,就像纯虚函数一样。它使类成为抽象类,这意味着该类的对象不能被实例化。但是,即使我们将函数声明为纯函数,它也必须有一个函数体(定义),因为当对象被销毁时总是会调用析构函数。 虚析构函数和纯虚析构函数之间的唯一区别是纯虚析构函数会将其基类声明为抽象类。因此,我们不能创建该类的对象。派生类不需要实现纯虚析构函数。 C++ 中的纯虚析构函数示例让我们举一个例子来说明 C++ 中的纯虚析构函数。 示例编译并运行输出 Derived destructor called Base destructor called 说明 在这个例子中,我们演示了基类中的纯虚析构函数,这使其成为抽象类。之后,析构函数仍在类外部定义,以确保正确清理。当通过基指针删除派生对象时,两个析构函数都以正确的顺序调用,从而确保安全销毁。 C++ 中析构函数的特性C++ 中析构函数的几个特性如下:
析构函数何时执行?当对象超出范围或被删除时,析构函数会自动调用。在 C++ 中,有几种情况下我们会调用析构函数。
C++ 析构函数常见问题解答1) C++ 中的析构函数是什么? 在 C++ 中,析构函数是一个特殊的成员函数,当对象超出作用域或被删除时会自动调用,用于释放资源。 2) 析构函数何时调用? 当我们需要销毁一个对象时,无论是它超出作用域还是调用 delete,它都会自动调用。 3) C++ 中的一个类可以包含多个析构函数吗? 不,一个类中只能有一个析构函数,并且不能重载。 4) C++ 中析构函数的语法是什么样的? 它是一个波浪号(~),然后是类名:~ClassName()。 5) C++ 中的虚析构函数是什么? 在 C++ 中,虚析构函数是一种未定义行为,用于通过基类指针对象删除派生类对象。 下一主题C++ 中的虚析构函数 |
在 C++ 中,虚拟析构函数用于在删除基类指针对象使用的派生类实例时,释放派生类对象或实例分配的内存空间。基类或父类析构函数使用 virtual 关键字,该...
阅读 8 分钟
在 C++ 中,构造函数重载是 OOPs(面向对象编程)中的一项重要功能,它允许一个类拥有多个具有不同参数的构造函数。可以定义具有不同参数列表的多个构造函数变体,以便以各种方式创建对象。类实例由...
阅读9分钟
C++ 中的构造函数 在 C++ 中,构造函数是一种特殊的函数,在对象创建时会自动调用。它通常用于初始化新对象的数据成员。在 C++ 中,构造函数与类名相同或...
11 分钟阅读
我们知道,每当我们创建一个类时,都会创建一个默认构造函数,在其他语言中通常是看不见的。但当我们自己创建一个构造函数时,我们可以灵活地传递我们认为必要的参数...
阅读 4 分钟
在 C++ 中,复制构造函数是一种构造函数,它通过复制同一类中已存在对象的内容来创建新对象。每当使用同一类的另一个对象初始化对象时,就会调用它。这个过程……
阅读 10 分钟
在本文中,我们将探讨 C++ 编程语言中的构造函数和析构函数之间的比较。我们将从本文中学到的第一件事是构造函数和析构函数的基本概念。之后,我们将学习各种比较...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India