某互联网公司c++笔试题1

1. 画多重继承虚函数表

注:虚函数表是一种编译时构建的数据结构,它用于在运行时解析对虚函数的调用,是一个存储类成员函数指针的数组。每个拥有虚函数的类都有一个对应的虚函数表。当类对象创建时,对象中会包含一个指向相应虚函数表的指针(称为vptr,虚指针)。这个指针是对象的隐式成员,由编译器自动添加到每个对象中。
        每个对象的虚指针指向对应的虚函数表。虚函数表的布局和内容在编译时就已确定,里面存储的是类的虚函数的地址。当一个虚函数被调用时,实际上是通过虚指针来间接调用的。

        虚函数表运行时才会被调用,允许通过基类指针或引用调用派生类的方法。特别灵活,子类可以覆盖父类的虚函数实现,而调用者无需知道具体的子类类型。

        当然有额外的开销,虚函数调用通常比非虚函数调用慢,因为需要额外的间接寻址。内存也有额外的开销,每个对象需要额外存储一个虚指针,每个类需要一个虚函数表。

2. 循环与递归可以转换吗?各有啥特点

循环和递归是在编程中实现重复操作的两种基本方法。它们在功能上是等效的,理论上任何使用循环的代码都可以通过递归来实现,反之亦然。尽管如此,它们各有其特点和最适用的场景。

        从循环到递归:将循环结构的代码转换成递归通常涉及将循环的迭代过程表达为递归调用。每次递归调用相当于循环的一次迭代,并在满足基本条件时结束递归。

        从递归到循环:递归函数通常可以重写为使用栈的循环结构,其中栈用来模拟递归调用栈的行为。这种转换可以消除递归的开销,特别是对于深递归调用栈可能导致栈溢出的情况
递归特点:

        自然表达:递归提供了一种简洁的方式来处理那些问题本身就是递归

相关推荐

  1. 互联网公司c++试题1

    2024-04-20 17:16:07       14 阅读
  2. 成都公司试题sql

    2024-04-20 17:16:07       19 阅读
  3. 互联网公司c++面试题

    2024-04-20 17:16:07       16 阅读
  4. 试题记录

    2024-04-20 17:16:07       19 阅读
  5. C语言:指针试题

    2024-04-20 17:16:07       8 阅读
  6. 【嵌入式试题C语言试题(4)

    2024-04-20 17:16:07       13 阅读
  7. VUE试题精讲1

    2024-04-20 17:16:07       52 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-20 17:16:07       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-20 17:16:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-20 17:16:07       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-20 17:16:07       20 阅读

热门阅读

  1. 如何正确设计 TCP/IP 流式应用层网络协议

    2024-04-20 17:16:07       14 阅读
  2. coco128数据对象类别中英文对照json格式

    2024-04-20 17:16:07       12 阅读
  3. electron+Vue3构建桌面应用之IPC通讯

    2024-04-20 17:16:07       13 阅读
  4. 构建spotify的electron版本

    2024-04-20 17:16:07       12 阅读
  5. NLP预训练模型

    2024-04-20 17:16:07       12 阅读
  6. 微服务架构中的业务数据可视化设计

    2024-04-20 17:16:07       18 阅读
  7. Linux学习 - 常用和不太常用的实用awk命令

    2024-04-20 17:16:07       14 阅读