请你说说虚函数的工作机制⭐⭐⭐⭐⭐
虚函数表在什么时候创建?每个对象都有一份虚函数表吗?⭐⭐⭐⭐⭐
函数重载是怎么实现的?⭐⭐⭐⭐⭐
纯虚函数了解吗?什么情况下使用?⭐⭐⭐⭐⭐
请说说操作符重载⭐⭐⭐⭐
哪些操作符不能重载?⭐⭐⭐
请说说多重继承的二义性⭐⭐⭐⭐
=========================================================================================================
- 本专栏适合于C/C++已经入门的学生或人士,有一定的编程基础。
- 本专栏适合于互联网C++软件开发、嵌入式软件求职的学生或人士。
- 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵
- 针对于非科班同学,建议学习本人专刊文章《蒋豆芽的秋招打怪之旅》,该专刊文章对每一个知识点进行了详细解析。
- 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
- 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。
=========================================================================================================
请你说说虚函数的工作机制⭐⭐⭐⭐⭐
C++实现虚函数的原理是虚函数表+虚表指针。
当一个类里存在虚函数时,编译器会为类创建一个虚函数表,虚函数表是一个数组,数组的元素存放的是类中虚函数的地址。
同时为每个类的对象添加一个隐藏成员,该隐藏成员保存了指向该虚函数表的指针。该隐藏成员占据该对象的内存布局的最前端。
所以虚函数表只有一份,而有多少个对象,就对应多少个虚函数表指针。
虚函数表在什么时候创建?每个对象都有一份虚函数表吗?⭐⭐⭐⭐⭐
当一个类里存在虚函数时,编译器会为类创建一个虚函数表,发生在编译期。
虚函数表只有一份,而有多少个对象,就对应多少个虚函数表指针。
函数重载是怎么实现的?⭐⭐⭐⭐⭐
在编译后,函数签名已经都不一样了,自然也就不冲突了。这就是为什么C++可以实现重名函数,但实际上编译后的函数签名是不一样的。
签名命名的方式是:_z+函数名字符个数+函数参数列表。
比如四个函数:
void display(char str) { cout << str << endl; }; void display(int i) { cout