文章目录
- 写在最前面
-
- 41.this指针
- 42.常函数和常对象
- 43.Delete this合法吗?
- 44.为什么空类的大小不为0?
- 45.静态成员变量和静态成员函数
- 46.初始化列表的好处和使用条件是什么?
- 47.能否通过初始化列表初始化静态成员变量?
- 48.友元的缺点是什么?友元全局函数?友元类?友元成员函数?
- 49.运算符重载?举例说明运算符重载?
- 50.C++内置类型的i++和++i的区别是什么?
- 51.继承的主要作用是什么?
- 52.继承方式有哪些?
- 53.继承的对象模型
- 54.继承中的同名处理
- 55.static修饰的方法可以继承吗?
- 56.继承的应用场景举例?
- 57.多继承有什么问题?
- 58.什么是菱形继承?它会产生什么问题?怎么解决菱形继承产生的问题?
- 59.虚继承
- 60.内联函数
写在最前面
专栏文章的所有问题与答案均来源于各个技术网站、技术博客等。由于当年自己有找工作需要,而面试问题与答案十分零散,不成体系,难以速成,所以收集整理了大量的笔试面试问题,主要包含的板块有:C/C++基础、操作系统、计算机网络、数据库、数据结构与算法、大数据等。
目前因工作原因,自己已经不再需要这些资料,准备清理电脑空间,所以会逐步分享出来。
本篇文章主要讲述的内容是:研发面试中的C/C++基础知识(第41——60题),文章以“一问一答”形式呈现。欢迎大家批评指正。
41.this指针
在类实例化对象时,只有非静态成员变量属于对象本身,剩余的静态成员变量,静态函数,非静态函数都不属于对象本身,因此非静态成员函数只会实例一份,多个同类型对象会共用一块代码。每个实例化的对象都有独一无二的地址,因此不同的实例对象在调用成员函数时,函数需要知道是谁在调用它,因此引入了this指针。this指针是隐含在对象成员函数内的一种指针。*this表示对象本身,非静态成员函数中才有this,静态成员函数中没有。
42.常函数和常对象
常函数修饰的是this指针,即不允许修改this指针指向的值,如果即使是常函数也要执意修改,则可以在成员属性前加mutable关键字。常对象不允许修改属性,不可以调用普通成员函数,可以调用常函数。
43.Delete this合法吗?
Delete this合法,但有前提:(1)必须保证 this 对象是通过new分配的;(2)必须保证调用delete this的成员函数是最后一个调用this的成员函数;(3)必须保证成员函数的delete this后面没有再调用this了;(4)必须保证delete this后没有人使用了。
44.为什么空类的大小不为0?
C++编译器不允许对象为0长度,为了确保两个不同对象的地址不同,空类大小设置为1。
45.静态成员变量和静态成员函数
若将成员变量声明为static,则为静态成员变量,与一般成员变量不同,无论建立多少个对象,都只有一份静态成员变量的拷贝。静态成员变量属于类,所有对象共享。静态变量在编译阶段、对象还没创建时就分配了空间,放到全局静态区。
对于