Constructor和Destructor在C++中的区别

构造函数和析构函数是C++编程语言中的两个重要概念。本文将比较构造函数和析构函数,并首先介绍它们的基本概念,然后讨论它们在C++编程中的各种比较。

1.png

什么是C++?

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

构造函数是什么?

构造函数是具有与类名相同的特殊成员函数。它在创建类的对象时自动调用。

语法:

C++中构造函数的语法如下所示:

class 类名
{
……….
public
类名 ([参数列表])
{
……………….
}
};

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

构造函数的示例:

#include <iostream>  
using namespace std;  
class Hello {     // 类  
public:           // 访问修饰符  
   Hello () {     // 构造函数  
      cout << "Hello World! Program in C++ by using Constructor";  
   }  
   void display() {  
      cout <<"Hello World!" <<endl;  
   }  
};  
int main() {  
   Hello myObj;   
   return 0;  
}  

在C++中有四种类型的构造函数:

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

默认构造函数:如果一个类没有构造函数,编译器会隐式创建一个默认构造函数。

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

class 类名 {  
private:  
………..  
………..  
public:  
类名 ()  
{  
…….  
}  
}  

在这种类型的构造函数中,没有参数和参数列表。

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

示例:

class student {  
private:  
………..  
………..  
public:  
student ()  
{  
…….  
}  
}  

类student的默认构造函数如下:

hello::hello()

带参数的构造函数:带有参数的构造函数被称为带参数的构造函数。它用于使用不同的值集初始化对象。

带参数的构造函数的语法如下:

class 类名  
{  
…………;  
…………;  
public:  
类名 (参数列表)  
{  
………….;  
}  
};  

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

拷贝构造函数:用于从同一类型的另一个对象初始化对象的特殊构造函数。拷贝构造函数用于初始化另一个对象。

语法:

拷贝构造函数的语法如下。

类名 (类名 &对象)  
{  
………….;  
………….;  
}  

在上述语法中,对象是用于初始化另一个对象的对象。

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

析构函数是什么?

析构函数与类名之前有相同的名称和(~)波浪符。它会删除并销毁构造函数在创建对象时分配的内存。

语法:

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

class 类名
{
…………….;
…………….;
public:
类名 ()
{
………….;
}
~类名 ()
{
………….;
}
};

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

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

析构函数的示例:

#include <iostream>  
using namespace std;  
class Hello {  
public:  
   //构造函数  
   Hello () {  
      cout<< "Constructor function is called" <<endl;  
   }  
   //析构函数  
   ~Hello () {  
      cout << "Destructor function is called" <<endl;  
   }  
   //成员函数  
   void display() {  
      cout <<"Hello World!" <<endl;  
   }  
};  
int main(){  
   //对象创建  
   Hello obj;  
   //调用成员函数  
   obj.display();  
   return 0;  
}  

在上面的程序中,我们使用析构函数在创建对象后调用了Hello类的构造函数,并销毁了对象的内存,释放了对象构造函数在创建对象时分配的内存。

构造函数和析构函数在C++编程中的区别如下:

基础构造函数析构函数
使用目的在C++中用于为对象分配内存空间在C++中用于释放构造函数为对象分配的内存空间
参数可以包含参数或不包含参数不能包含参数
调用在创建类的对象时自动调用在程序终止时自动调用
内存构造函数占用内存空间析构函数释放内存空间
返回类型构造函数具有返回类型析构函数没有返回类型
特殊符号在声明构造函数时不需要特殊符号在声明析构函数时需要使用波浪符号(~)
数量程序中可以使用多个构造函数程序中只能使用一个析构函数
继承构造函数可以继承析构函数不能继承
重载构造函数可以重载析构函数不能重载
执行顺序构造函数按照声明顺序依次执行析构函数按照构造函数的相反顺序执行,基本上是构造函数的逆序
类型构造函数有四种类型:默认构造函数、拷贝构造函数、带参数的构造函数、动态构造函数析构函数没有类别
声明创建构造函数的声明如下:class 类名{ ……….public 类名 ([参数列表]){……………….}};创建析构函数的声明如下:class 类名 { …………….; …………….; public: ~xyz(); { ………… };

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言下载, C++语言开发, C++语言入门教程, C++语言进阶教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想