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

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

构造函数:

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

语法:

ClassName()
{
     //Constructor's Body 
}

析构函数:

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

语法:

~ClassName(){ 
    //Destuctor's Body
}

注意:如果没有为类中的成员指定任何访问修饰符,那么默认情况下,成员的访问修饰符将是 Private

构造函数和析构函数的示例/实现:

#include <iostream>
using namespace std;

class Z
{
public:
    // constructor
    Z()
    {
        cout<<"Constructor called"<<endl;
    }

    // destructor
    ~Z()
    {
        cout<<"Destructor called"<<endl;
    }
};

int main()
{
    Z z1; // Constructor Called
    int a = 1;
    if(a==1)
    {
        Z z2; // Constructor Called
    } // Destructor Called for z2
} // Destructor called for z1

运行结果:

Constructor called
Constructor called
Destructor called
Destructor called

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

构造函数 析构函数
构造函数帮助初始化一个类的对象。 析构函数用于销毁实例。
构造函数声明为 Classname( arguments if any ){Constructor's Body } 析构函数被声明为 〜ClassName(){}
构造函数可以接受或不接受参数。 析构函数不能有任何参数。
在创建类的实例或对象时调用构造函数。 析构函数在类的对象被释放或删除时调用。
构造函数用于为实例或对象分配内存。 析构函数用于释放类对象的内存。
构造函数可以重载。 析构函数不能超载。
构造函数名与类名相同。 析构函数的名称也与前面带有平铺 (~) 运算符的类名相同。
在一个类中,可以有多个构造函数。 在一个类中,总是有一个析构函数。
有一个复制构造函数的概念,用于从另一个对象初始化一个对象。 析构函数没有复制构造函数的概念。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程