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


关于构造函数的C++面试题

什么是构造函数?

**构造函数**是与类名相同的类函数。构造函数在对象初始化时被调用。构造函数有三种类型:

  • 默认构造函数
  • 参数化构造函数
  • 复制构造函数

语法

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

什么是析构函数?

**析构函数**是类的一个方法,其名称与类名相同,前面带有**波浪号 ~** 符号。它在代码结束或对象被销毁或超出作用域时被调用。

语法

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

构造函数有什么用?

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

创建对象时,变量会被初始化为内存块和基值(如果存在)。

析构函数有什么用?

析构函数是与类名相同并在前面带有 ~ 符号的方法。析构函数的用途是在代码超出对象的作用域或使用**delete关键字**删除对象时释放内存块。

删除对象时,会调用析构函数,它会释放创建对象时分配的所有内存块。

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

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

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

析构函数的调用顺序与构造函数相反,并在删除类的对象时调用。析构函数的调用顺序与继承的层次结构正好相反。这意味着首先销毁子类的对象,然后销毁父类的对象,依此类推。

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

如果程序员没有显式定义任何构造函数,则编译器会默认创建构造函数。如果程序员定义了构造函数,则编译器会停止其工作,不再定义任何构造函数。

更新于:2019年9月19日

1000+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告