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

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

在本文中,我们将了解C++编程语言中构造函数和析构函数的比较。从本文中我们将学到的第一件事是构造函数和析构函数的基本概念。然后,我们将学习C++编程中构造函数和析构函数的各种比较。

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

什么是C++

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

C++中的构造函数

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

语法:

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

class class_name
{
……….
public
class_name ([parameter list])
{
……………….
}
};

在上面给出的语法中,class_name是构造函数的名称,public是一个访问说明符,参数列表是可选的。

构造函数示例

#include <iostream.h>
#include <conio.h>
using namespace std;
class hello {     // The class
  public:           // Access specifier
   hello () {     // Constructor
      cout << "Hello World! Program in C++ by using Constructor";
    }
   void display() {
     cout <<"Hello World!" <<endl;
   }
};
int main() {
  hello myObj;   /
  return 0;
}

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

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

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

以下是默认构造函数的语法

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

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

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

示例:

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

下面是一个学生类的默认构造函数:

hello::hello()

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

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

Class classname
{
…………;
…………;
Public:
Class name (parameter list)
{
………….;
}
};

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

拷贝构造函数: 用于创建现有对象的特定构造函数。拷贝构造函数用于从相同类型的另一个对象初始化对象。

语法:

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

Class (classname, &object)
{
………….;
………….;
}

在上述语法中,对象是指用来初始化另一个对象的东西。

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

C++中的析构函数

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

语法:

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

class class_name
{
…………….;
…………….;
public:
xyz();            //constructor
~xyz();           //destructor
};

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

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

析构函数示例

#include <iostream.h>
#include <conio.h>
using namespace std;
class Hello {
public:
  //Constructor
  Hello () {
    cout<< "Constructor function is called" <<endl;
  }
  //Destructor
  ~Hello () {
    cout << "Destructor function is called" <<endl;
   }
   //Member function
   void display() {
     cout <<"Hello World!" <<endl;
   }
};
int main(){
   //Object created
   Hello obj;
   //Member function called
   obj.display();
   return 0;
}

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

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

基础 构造函数 析构函数
使用目的 为了给对象分配内存,我们使用了c++中的构造函数。 为了释放构造函数为此分配给对象的内存,我们使用c++中的析构函数的概念。
参数 它可以包含也可以不包含参数。 不能包含参数。
调用 每当创建类的对象时,它就会自动调用。 每当程序终止时,都会自动调用。
内存 构造函数占用内存。 析构函数释放内存。
返回类型 它有返回类型。 它没有任何返回类型。
符号 在c++编程语言中声明构造函数时,对特殊符号没有要求。 在c++编程语言中声明析构函数时,需要一个特定的符号,即波浪线符号。
在数字中 ,我们可以在程序中使用多个构造函数。 我们不能在程序中使用多个析构函数。
继承 它可以被继承。 不能继承。
重载 它可以重载。 不能过载。
执行顺序 它们按连续顺序执行。 它们按照构造函数的逆序执行;基本上,它们是构造函数的逆函数。
类型 构造函数有四种类型:
默认构造函数
复制构造函数
参数化构造函数
动态构造函数
析构函数没有类。

下面的声明用于创建构造函数:

class class_name
{
……….
public
class_name ([parameter list])
{
……………….
}
};

下面的声明用于创建析构函数:

class class_name
{
…………….;
…………….;
public:
~xyz();  
{
…………         
};

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程