构造函数和析构函数

Anonim

该类是面向对象编程(OOP)的核心。它就像是创建为成员变量和成员函数提供初始值的对象的蓝图。它是OOP的基本构建块,它定义了未来对象的本质。关于类的最重要的事情是它定义了一种新的数据类型,一旦定义,它就可以用来创建该类型的对象。所以说一个类是一个对象的模板就足够了,一个对象实际上是一个类的实例。它用于创建和管理新对象并支持继承,这是面向对象编程语言(如Java)的核心概念之一。简而言之,类会组织有关数据类型的信息,以便在创建该数据类型的多个实例时重用元素。类中定义的数据或变量称为实例变量。

什么是构造函数?

构造函数是类的特殊成员函数,在创建对象的实例时调用该函数。每次创建实例时,有时很难初始化类中的所有变量。由于初始化的需求在面向对象编程中很常见,因此它允许对象在创建时自动初始化。这个自动初始化过程是通过使用构造函数完成的。它被称为特殊的原因是因为实例方法通常与类具有相同的名称。它在创建时立即初始化对象,并可用于设置对象成员的值。构造函数在语法上类似于面向对象编程中的方法,而方法是与类关联的过程,并包含在该类的任何对象中。简而言之,每次创建类的对象时都会调用构造函数。构造函数最重要的是它们没有返回类型,甚至没有返回类型。

什么是析构函数?

析构函数完全是一个不同的概念;它是一种特殊的方法,当从内存中删除类的实例时调用它。当不再需要对象或即将消失或显式释放对象时,将自动调用析构函数。析构函数的主要目的是消除对象在其生命周期中使用的资源。它为对象提供了释放其分配的任何内存的最后机会,以便堆上有足够的空间来存储新对象以有效地运行程序。析构函数通常与构造函数一起使用,除了它们用于销毁使用构造函数创建的对象。这个想法是在删除对象时对其进行去初始化,以释放新对象的内存。与构造函数一样,析构函数在类定义中被定义为子例程,它们与类名具有相同的名称,但析构函数的前缀是 ~ (代字号)运营商。在C ++中显式调用析构函数,但Java中没有析构函数。

构造函数和析构函数之间的区别

构造函数和析构函数的用途

构造函数和析构函数都是每个类的特殊成员函数,但具有不同的概念。构造函数用于初始化类的实例,这意味着每次实例化类时都会调用它,而析构函数则是构造函数的反义,它们以构造函数的相反顺序调用。

内存分配

每次创建类的新实例时都会调用构造函数。它基本上是一个类的成员函数,它在创建时立即初始化对象并为其分配内存。另一方面,当从内存中删除类的实例时调用析构函数,该内存依次取消初始化使用构造函数创建的对象以释放新对象的内存。

名称

构造函数和析构函数都是类的特殊成员函数,与类名同名,除了析构函数以〜(代字号)运算符为前缀。构造函数只不过是一个没有返回类型的方法,甚至不是void,而析构函数恰好与构造函数相反。

超载

在创建和删除后,将自动调用构造函数和析构函数。但是,与构造函数不同,析构函数不能超载。重载是一种面向对象的编程概念,它允许您定义两个或多个具有相同名称的函数,以便您可以使用不同的参数列表调用它们。

参数

在面向对象的编程中,构造函数通常接受用于设置所需成员变量的参数,而析构函数不接受任何参数。

构造函数和析构函数的工作

构造函数允许对象在它被使用之前初始化它的一些值,而析构函数允许对象在它被销毁时执行代码的某些部分。

构造函数与析构函数:比较图表

构造函数的摘要。析构函数

构造函数和析构函数都是类的特殊成员函数,与类名同名,除了析构函数前面有一个~twode运算符。构造函数只是一个方法,除了在创建对象的实例时调用它,而析构函数与构造函数完全相反,当从内存中删除对象的实例时调用这些构造函数。析构函数的目的是对使用构造函数创建的对象进行去初始化,以释放内存空间以容纳新对象。