c/c++经典面试题-part1

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

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

  2. 什么是类

    具有共性的的对象的集合,称之为类

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

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

    • 静态特征是指能描述对象的一些属性,动态特征是指对象表现出来的行为

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

    • 这样可以提高编译效率,因为分开之后只需要编译一次对应生成的.obj文件,再次应用该类的地方,这个类就不会再次编译,从而大大提高了效率(整个编译过程分为预编译、编译和汇编,最终生成可执行文件,其中在windows下生成 .obj文件,在linux下生成 .o文件,学名叫做二进制可重定位文件)
    • 隐藏了代码
  5. 在类的内部定义成员函数的函数体,这种函数会具备哪种属性?

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

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

    通过this指针来区分,因为它指向的是对象的首地址。

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

    默认构造函数(不带参数的构造函数),拷贝构造函数(用于对象间的赋值),析构函数,赋值函数(等号的赋值)。

  8. 拷贝构造函数在哪几种情况下会被调用?

    • 当类的一个对象去初始化该类的另一个对象的时候
    • 如果函数的形参是类的对象,调用函数进行形参和实参结合时
    • 如果函数的返回值是类的对象,函数调用完成返回时
  9. 构造函数与普通函数相比在形式上有什么不同?

    • 构造函数时类的一种特殊成员函数,一般情况下,它是专门用来初始化对象成员变量的
    • 构造函数名字必须与类名相同,它不具有任何类型,不返回任何值。
  10. 什么时候必须重写拷贝构造函数?

    当构造函数涉及到动态存储分配空间时,要写自己的拷贝构造函数,并且要深拷贝

  11. 构造函数的调用顺序是什么?

    1. 先调用基类的构造函数
    2. 按声明顺序初始化数据成员
    3. 最后调用自己的构造函数
  12. 哪几种情况必须用到初始化成员列表?

    类的成员是常量的成员初始化

    类的成员是对象的成员初始化,而该对象没有无参构造函数

    类的成员为引用时

  13. 什么是常对象(const 修饰的对象)

    常对象是指在任何场合都不能对成员的值进行修改的对象

  14. 静态函数存在的意义

    静态私有成员在类外不能被访问,可以通过类的静态成员函数来访问;

    当类的构造函数是私有的时,不想普通类那样实例化自己。只能通过静态成员函数来调用构造函数

  15. 在类外有什么拌饭可以访问类的非公有成员

    友元,继承,公有成员函数

posted @ 2020-08-25 20:19  Chilk  阅读(130)  评论(0编辑  收藏  举报