获赞
296
粉丝
68
关注
9
看过 TA
4277
黑龙江东方学院
2025
C++
IP属地:黑龙江
暂未填写个人简介
私信
关注
备注:PC客户端自我介绍(1-3分钟)八股部分:1、面向对象三大特性?2、C++如何实现多态3、什么是虚函数?4、什么时候无法实现虚函数5、调用方法时如何调用相对应的虚函数实现?6、虚函数和普通函数的区别?7、有一个基类A,B是A的子类,C是B的子类,然后A方法里面有一个虚函数P,请尝试分析:C中的P函数虚函数指针指向哪里?8、A指针指向B对象,最后使用A指针调用虚方法,如何找到对应的实现(延伸:如果A调用的是普通方法,调用过程如何找到方法)9、什么是直接调用?10、什么是智能指针?11、如果不用智能指针手动管理 如何管理new对象防止内存泄漏?12、什么是虚拟地址?12.1、为什么采用虚拟地址?12.2、如何使用虚拟地址来扩展内存?12.3、硬件上有6M字节,程序需要8M字节,如何进行映射?12.4、如何将有限的地址映射到已经超出了内存范围的范围?12.5、如何通过虚拟地址找到存储块?12.6、虚拟内存地址0~7,0存储的是什么?12.7、使用虚拟内存在哪里取数据?12.8、虚拟内存如何从物理储存到页交换文件?13、内存的划分有哪些区域?14、栈的优点?15、为什么栈快?16、堆区的优点?17、堆区的结构?18、什么是内存碎片?19、内存碎片是如何产生的?20、为什么内存分配过大?21、如何避免内存碎片?22、最优适配方法的劣势?23、简述一个对象的内存结构是什么样的?问了一下简历上面的项目算法题:写一个函数。他有两个字符串类型的参数(长度不限),分别是正整数,计算这两个数之和,返回字符串。 #软件开发2024笔面经# #腾讯视频#
ZackZhang:当你有一个指向B对象的A类型指针,并且使用这个指针调用一个虚方法时,C++通过动态绑定来决定应该调用哪个方法实现。这里是这个过程的详细说明: 1. 调用虚方法: • 当A的指针调用一个虚方法时,编译器会检查这个指针的实际类型(在运行时)是B。 • 然后,它会查看B的虚函数表(vtable),这个表在编译时为每个包含虚函数的类创建,并在运行时用具体的函数地址填充。 • 指针会通过B的vtable找到正确的函数实现(即使是通过A类型的指针调用)并执行。这就是多态行为的基础。 2. 调用非虚方法: • 如果A的指针调用的是一个非虚方法,那么这个调用就是静态绑定的。这意味着调用的实现是在编译时决定的,而不是运行时。 • 对于非虚方法,即使A的指针实际上指向一个B类型的对象,它也会调用在A中定义的那个方法实现。在这种情况下,不存在动态多态性,因为方法的调用不会检查对象的实际派生类类型。 所以,总结起来: • 对于虚方法,C++使用动态绑定:即便是通过基类指针调用,也会根据对象的实际类型来确定应该执行哪个类中的方法。 • 对于非虚方法,C++使用静态绑定:方法调用解析基于指针的声明类型,而不是它实际指向的对象的类型,因此总是调用基类中定义的方法。
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务