基于构造函数/析构函数的C ++面试问题

有关构造函数的C ++面试问题

什么是构造函数?

一个构造函数是具有相同的名称类的类的功能。在初始化对象时调用构造函数。共有三种类型的构造函数-

  • 默认构造函数

  • 参数化构造函数

  • 复制构造函数

语法

class cl_name{
   cl_name(){
      //This is constructor..
   }
}

什么是析构函数?

析构函数是具有相同的名称前面有一个的类的类的方法tild〜符号。在代码末尾或对象被破坏或超出范围时调用它。

语法

class cl_name{
   ~ cl_name(){} //destructor
}

构造函数有什么用?

构造函数是与类同名的方法。构造函数的使用是在使用new 关键字创建对象时初始化该对象。

创建对象时,变量将初始化内存和基值(如果有)的大块。

析构函数的用途是什么?

析构函数是一种与〜符号前面的类具有相同名称的方法。析构函数的使用是将代码超出对象范围或使用delete关键字删除的代码重新分配内存块。

删除对象后,将调用析构函数,并将其重新分配在创建对象时创建的所有内存块。

C ++中构造函数执行的顺序是什么?

创建类的对象时,将调用构造函数。调用构造函数的顺序与继承的层次结构相同。这意味着首先调用基类的对象,然后调用子类的对象,依此类推。

在C ++中执行析构函数的顺序是什么?

析构函数作为构造函数以相反的顺序被调用,并且在删除类的对象时被调用。调用析构函数的顺序与继承层次结构相反。这意味着首先破坏子类的对象,然后破坏父类的对象,依此类推。

即使我们创建其他构造函数,也会创建默认构造函数吗?

如果程序员未明确定义任何构造函数,则构造函数默认由编译器创建。如果程序员定义了构造函数,则编译器将保留其工作并且不定义任何工作。