C++ 构造函数与析构函数的区别

2025 年 8 月 29 日 | 阅读 4 分钟

在本文中,我们将比较 C++ 编程语言中的构造函数和析构函数。首先,我们将学习构造函数和析构函数的基本概念。之后,我们将学习 C++ 编程中构造函数和析构函数的各种比较。

Constructor vs Destructor in C++

什么是 C++?

C++C 的超集,因为它支持面向过程和面向对象的编程语言。它是一种中级语言。它具有封装、继承、抽象、数据隐藏、构造函数和析构函数等各种特性。

C++ 中的构造函数?

构造函数是一种特殊的成员函数,其名称与类名相同。只要创建类的对象,它就会自动调用。

语法

C++ 中构造函数的语法如下。

在上述语法中,class_name 是构造函数的名称,public 是访问修饰符,参数列表是可选的。

构造函数示例

C++ 中使用了四种类型的构造函数。

  • 默认构造函数
  • 动态构造函数
  • 参数化构造函数
  • 拷贝构造函数

默认构造函数:不接受任何参数的类的构造函数称为默认构造函数。如果类没有构造函数,编译器会隐式创建一个默认构造函数。

默认构造函数的语法如下:

这种构造函数没有参数和参数列表。

如果在类中没有定义构造函数,编译器会自动创建该类的默认构造函数。

示例

学生类的默认构造函数如下所示

hello::hello()

参数化构造函数:可以接受参数的类的构造函数称为参数化构造函数。它用于使用不同的值集初始化对象。

参数化构造函数的语法如下。

在这里,我们可以定义构造函数的参数列表。

复制构造函数:一种特殊的构造函数,用于创建现有对象。复制构造函数用于从另一个相同类型的对象初始化对象。

语法

复制构造函数的语法如下。

在上述语法中,object 指的是用于初始化另一个对象的“事物”。

动态构造函数:这种类型的构造函数可以在创建对象时用于分配内存。对象创建后,可以初始化其数据成员,称为动态初始化。

C++ 中的析构函数?

析构函数与类名相同,前面带有 (~) 波浪号符号。它删除并销毁构造函数在创建对象期间分配的对象内存。

语法

C++ 中析构函数的语法如下。

在这里,我们使用波浪号符号来定义 C++ 编程中的析构函数。

析构函数没有参数,也不返回任何值,因此不能重载。

析构函数示例

C++ 编程中构造函数与析构函数的区别

下表显示了 C++ 编程语言中构造函数和析构函数的各种区别

基础构造函数析构函数
使用目的为了给对象分配内存,我们在 C++ 中使用构造函数。为了释放构造函数为对象分配的内存,我们为此目的在 C++ 中使用析构函数的概念。
参数它可能包含也可能不包含参数。它不能包含参数。
调用只要创建类的对象,它就会自动调用。只要程序终止,它就会自动调用。
内存构造函数占用内存。析构函数释放内存。
返回类型它有返回类型。它没有任何返回类型。
特殊符号在 C++ 编程语言中声明构造函数时,不需要特殊符号。在 C++ 编程语言中声明析构函数时,需要一个特殊符号,即波浪号符号。
数量上我们可以在程序中使用多个构造函数。我们不能在程序中使用多个析构函数。
继承它可以被继承。不能被继承。
重载它可以被重载。它不能被重载。
执行顺序它们按顺序执行。它们以构造函数相反的顺序执行;基本上,它们是构造函数的逆序。
类型构造函数有四种类型
  • 默认构造函数
  • 拷贝构造函数
  • 参数化构造函数
  • 动态构造函数
析构函数没有类型。
声明以下声明用于创建构造函数
class class_name
{
……….
public
class_name ([parameter list])
{
……………….
}
};
以下声明用于创建析构函数
class class_name
{
…………….;
…………….;
public:
~xyz();  
{
…………         
};

下一个主题C++ 中的继承