网易互娱游戏研发面经及答案:C++基础

本文介绍了C++中的多态概念,包括编译时和运行时多态的区别,以及如何通过继承和虚函数实现运行时多态。详细解释了虚函数表的工作原理和在类实例中的存储位置,强调了虚函数在代码重用和接口重用中的作用。此外,还讨论了C++的关键字如`static`和`const`的用途,以及指针和引用的区别。文章涵盖了C++基础,如类、函数、数据结构和内存管理,并提及了数据库和智能指针等高级主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面经整理自网络,答案为个人补充内容。

C++基础

1. 多态,虚函数

我的C++学习笔记

  1. 怎么理解多态?多态的定义?
    答:多态就是让程序可以在编译时/运行时决定被调用的方法是哪一个。多态分编译时多态和运行时多态。运行时多态通过继承和虚函数来体现;在程序编译时多态体现在函数和运算符的重载上。
  2. 举个多态的例子?
    比如有个英雄类,它有个攻击方法。现在再实现它的两个子类法师类和战士类,它们各自有不同的攻击方法。然后在程序执行时就可以用英雄类的指针指向法师类或者战士类对象,然后用这个父类指针调用战斗时就会触发动态绑定,调用到指向对象自己的方法。
  3. C++如何实现多态?
    答:将基类类型的指针或者引用指向派生类型的对象。通过虚函数,子类重写父类函数,执行时根据对象类型执行不同的函数达到多态。
  4. 多态有什么用?
    答:①代码重用:隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;②接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用
    C++虚函数的实现机制?
  5. 虚函数具体是怎么实现动态绑定的?
    答:类有一个虚函数表,定义的每个实例对象有一个虚函数表指针指向类的虚函数表。子类重写父类的虚函数会替换虚函数表项的对应函数指针。
  6. 每个实例对象都有一个虚函数表指针吗?
    答:是的。
  7. 虚函数放哪?
    答:放在类的最前面的位置,有一个指向虚函数表的指针
  8. 多继承的虚函数表怎么放?
    答:一个在上另一个在下面,按照继承顺序
  9. 说说虚继承?
    答: 如果b,c是a的子类,d继承b,c,那么d中a会被构造两次,造成数据冗余。使用虚继承则a只会被构造一次
    虚函数,子类父类virtual 写不写有什么区别
    4.虚函数的原理介绍一下,哪些函数不能是虚函数构造函数中可以调用虚函数吗?为什么?
    析构函数需要声明为虚函数吗?为什么?
    5.虚函数指针在多继承下的情况
    比如类C继承了类A和类B。A,B中都有虚函数,那么C的虚表指针有多少个,
    6.类C又定义了自己的虚函数,在虚表中的存储位置?
    //问题5和6推荐看一下这篇博客 说的很详细 https://blog.csdn.net/li1914309758/article/details/79916414
    虚函数的原理?
    A是基类,B是子类,B在构造函数中调用A的虚函数会怎样?
    1.C++虚函数(1) 函数调用(2) 虚函数表什么时候创建,工作原理(
    ①C++的多态如何实现(虚函数、虚函数表那些),是如何从调用虚函数到虚函数表里的指针指向指定虚函数,

1.多态的实现
2.如果父类和子类定义了一个函数名相同的函数,但不是虚函数,问父类指针指向的子类对象,调用这个函数是调用父类还是子类函数?同样,如果子类指针指向父类的对象,调用这个函数是调用父类还是子类函数?讲述一下它的原理

虚函数调用是怎么实现的。动态绑定发生时是怎么调用到子类的函数。多继承的子类有几个虚函数表。

2. 关键
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值