当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ Constructor和Destructor的区别用法及代码示例


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

  ClassName()
   {
     //Constructor's Body 
   } 

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

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

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

C++


#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++中构造函数和析构函数的区别:

S. 编号 构造函数 析构函数
1. 构造函数有助于初始化类的对象。 而析构函数用于销毁实例。
2. 它被声明为类名(参数,如果有){构造函数的主体}. 而它被声明为~ 类名(无参数){ }.
3. 构造函数可以接受参数,也可以不接受参数。 虽然它不能有任何参数。
4. 创建类的实例或对象时会调用构造函数。 当类的对象被释放或删除时调用它。
5. 构造函数用于为实例或对象分配内存。 而它用于释放类对象的内存。
6. 构造函数可以重载。 虽然不能超载。
7. 构造函数的名称与类名称相同。 这里,它的名称也与前面带有平铺(~)运算符的类名称相同。
8. 在一个类中,可以有多个构造函数。 在一个类中,总是有一个析构函数。
9. 有一个复制构造函数的概念,用于从另一个对象初始化一个对象。 而这里,没有复制析构函数的概念。
10. 它们通常按连续顺序调用。 它们通常以与构造函数相反的顺序调用。


相关用法


注:本文由纯净天空筛选整理自MKS075大神的英文原创作品 Difference Between Constructor and Destructor in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。