首页 > 就业 > 面试

C++经典面试问题

C++经典面试问题



C++经典面试问题

  上学的时候,很多人都经常追着老师们要知识点吧,知识点也可以理解为考试时会涉及到的知识,也就是大纲的分支。那么,都有哪些知识点呢?以下是小编帮大家整理的C++经典面试问题,希望能够帮助到大家。

  C++经典面试问题 1

  1.面向对象的程序设计思想是什么?

  答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。

  2.什么是类?

  答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。

  3.对象都具有的两方面特征是什么?分别是什么含义?

  答:对象都具有的特征是:静态特征和动态特征。

  静态特征是指能描述对象的一些属性(成员变量)

  动态特征是指对象表现出来的行为(成员函数)

  4.在头文件中进行类的声明,在对应的实现文件中进行类的定义有什么意义?

  答:这样可以提高编译效率,因为分开的话只需要编译一次生成对应的.obj文件后,再次应用该类的地方,这个类就不会被再次编译,从而大大的`提高了编译效率。

  5. 在类的内部定义成员函数的函数体,这种函数会具备那种属性?

  答:这种函数会自动为内联函数,这种函数在函数调用的地方在编译阶段都会进行代码替换。

  6. 成员函数通过什么来区分不同对象的成员数据?为什么它能够区分?

  答:通过this指针指向对象的首地址来区分的。

  7. C++编译器自动为类产生的四个缺省函数是什么?

  答:默认构造函数,拷贝构造函数,析构函数,赋值函数。

  C++经典面试问题 2

  1.new、、malloc、free关系

  会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符。注意new/不是库函数。

  2.与 []区别

  只会调用一次析构函数,而[]会调用每一个成员的析构函数。在More Effective C++中有更为详细的解释:“当操作符用于数组时,它为每个数组元素调用析构函数,然后调用operator 来释放内存。”与new配套, []与new []配套

  MemTest *mTest1=new MemTest[10];

  MemTest *mTest2=new MemTest;

  Int *pInt1=new int [10];

  Int *pInt2=new int;

  []pInt1; //-1-

  []pInt2; //-2-

  []mTest1;//-3-

  []mTest2;//-4-

  在-4-处报错。

  这就说明:对于内建简单数据类型,和[]功能是相同的。对于自定义的复杂数据类型,和[]不能互用。[]删除一个数组,删除一个指针。简单来说,用new分配的内存用删除;用new[]分配的内存用[]删除。[]会调用数组元素的析构函数。内部数据类型没有析构函数,所以问题不大。如果你在用时没用括号,就会认为指向的是单个对象,否则,它就会认为指向的是一个数组。

  3.C++有哪些性质(面向对象特点)

  封装,继承和多态。

  4.子类析构时要调用父类的析构函数吗?

  析构函数调用的次序是先派生类的`析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了。定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。

  5.多态,虚函数,纯虚函数

  多态:是对于不同对象接收相同消息时产生不同的动作。C++的多态性具体体现在运行和编译两个方面:在程序运行时的多态性通过继承和虚函数来体现;

  在程序编译时多态性体现在函数和运算符的重载上;

  虚函数:在基类中冠以关键字 virtual 的成员函数。 它提供了一种接口界面。允许在派生类中对基类的虚函数重新定义。

  纯虚函数的作用:在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义。作为接口而存在 纯虚函数不具备函数的功能,一般不能直接被调用。

  从基类继承来的纯虚函数,在派生类中仍是虚函数。如果一个类中至少有一个纯虚函数,那么这个类被称为抽象类(abstract class)。

  抽象类中不仅包括纯虚函数,也可包括虚函数。抽象类必须用作派生其他类的基类,而不能用于直接创建对象实例。但仍可使用指向抽象类的指针支持运行时多态性。

    版权声明:此文自动收集于网络,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。

    本文地址:https://www.gunzhua.com/jiuye/mianshi/824008.html

相关内容

热门阅读
随机推荐