1. 请你说说虚函数的工作机制⭐⭐⭐⭐⭐

  2. 虚函数表在什么时候创建?每个对象都有一份虚函数表吗?⭐⭐⭐⭐⭐

  3. 函数重载是怎么实现的?⭐⭐⭐⭐⭐

  4. 纯虚函数了解吗?什么情况下使用?⭐⭐⭐⭐⭐

  5. 请说说操作符重载⭐⭐⭐⭐

  6. 哪些操作符不能重载?⭐⭐⭐

  7. 请说说多重继承的二义性⭐⭐⭐⭐

=========================================================================================================

  • 本专栏适合于C/C++已经入门的学生或人士,有一定的编程基础。
  • 本专栏适合于互联网C++软件开发、嵌入式软件求职的学生或人士。
  • 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵
  • 针对于非科班同学,建议学习本人专刊文章《蒋豆芽的秋招打怪之旅》,该专刊文章对每一个知识点进行了详细解析。
  • 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
  • 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。

=========================================================================================================

  1. 请你说说虚函数的工作机制⭐⭐⭐⭐⭐

    C++实现虚函数的原理是虚函数表+虚表指针

    当一个类里存在虚函数时,编译器会为类创建一个虚函数表,虚函数表是一个数组,数组的元素存放的是类中虚函数的地址

    同时为每个类的对象添加一个隐藏成员,该隐藏成员保存了指向该虚函数表的指针。该隐藏成员占据该对象的内存布局的最前端。

    所以虚函数表只有一份,而有多少个对象,就对应多少个虚函数表指针

  2. 虚函数表在什么时候创建?每个对象都有一份虚函数表吗?⭐⭐⭐⭐⭐

    当一个类里存在虚函数时,编译器会为类创建一个虚函数表,发生在编译期。

    虚函数表只有一份,而有多少个对象,就对应多少个虚函数表指针

  3. 函数重载是怎么实现的?⭐⭐⭐⭐⭐

    在编译后,函数签名已经都不一样了,自然也就不冲突了。这就是为什么C++可以实现重名函数,但实际上编译后的函数签名是不一样的。

    签名命名的方式是:_z+函数名字符个数+函数参数列表

    比如四个函数:

    void display(char str) { cout << str << endl; };  
    void display(int i) { cout