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

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

构造函数 :

构造函数是一个与类名相同的成员函数。它有助于初始化类的对象。它可以接受参数或不接受参数。它用于分配类的对象的内存。每次创建类的实例时都会调用它。它可以手动定义有参数或无参数。一个类中可以有多个构造函数。它可以重载,但不能继承或虚拟化。有一种复制构造函数的概念,它用于从另一个对象初始化一个对象。

语法:

  ClassName()
   {
     //构造函数的主体
   } 

析构函数 :

和构造函数一样,析构函数也是一个与类名相同的成员函数,前面带有波浪线(~)运算符。它有助于释放对象的内存。在类中,总是有一个不带任何参数的析构函数,因此它不能重载。它总是在构造函数的相反顺序中调用。如果一个类被另一个类继承,且两个类都有一个析构函数,则首先调用子类的析构函数,然后调用父类或基类的析构函数。

语法:

  ~ClassName()
   { 
       //析构函数的主体
   }

注意: 如果我们没有为类内的成员指定任何访问修饰符,则默认成员的访问修饰符为Private。
构造函数和析构函数的例子/实现:

#include <iostream>
using namespace std;
 
class Z
{
public:
    // 构造函数
    Z()
    {
        cout<<"构造函数被调用"<<endl;
    }
 
    // 析构函数
    ~Z()
    {
        cout<<"析构函数被调用"<<endl;
    }
};
 
int main()
{
    Z z1;   // 构造函数被调用
    int a = 1;
    if(a==1)
    {
        Z z2;  // 构造函数被调用
    }  // 析构函数被调用,这里是z2的析构函数
} // 析构函数被调用,这里是z1的析构函数

输出:

构造函数被调用
构造函数被调用
析构函数被调用
析构函数被调用 

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

序号 构造函数 析构函数
1. 构造函数用于初始化类的对象。 而析构函数用于销毁实例。
2. 构造函数声明为 className( arguments if any ){Constructor’s Body } 。 而析构函数声明为 ~ className( no arguments ){ } 。
3. 构造函数可以有参数也可以没有。 而析构函数不能有任何参数。
4. 实例或类的对象被创建时调用构造函数。 它在类的对象被释放或删除时调用。
5. 构造函数用于分配实例或对象的内存。 而析构函数用于释放类的对象的内存。
6. 构造函数可以被重载。 而析构函数不能被重载。
7. 构造函数的名称与类名相同。 而析构函数的名称为类名前加上波浪号(~)运算符。
8. 在一个类中,可以有多个构造函数。 而在一个类中,永远只有一个析构函数。
9. 有一个复制构造函数的概念,用于从另一个对象初始化对象。 而这里没有复制析构函数的概念。
10. 构造函数和析构函数通常按顺序调用。 析构函数通常按构造函数的相反顺序调用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程