导航菜单
首页 >  大厂真题大厂真题  > 2024最新大厂C++面试真题合集,大厂面试百日冲刺 day8

2024最新大厂C++面试真题合集,大厂面试百日冲刺 day8

腾讯视频 C++多态性如何体现?模版怎么实现的多态?

C++中的多态性主要通过两种方式体现:虚函数(动态多态性)和模板(静态多态性)。

虚函数实现的多态性:通过基类指针或者引用,调用由不同的派生类重载的虚函数,实现在运行时根据对象的实际类型调用相应的函数处理,这被称为动态多态。模板实现的多态性:模板通过允许函数或类操作泛型类型,实现在编译时根据使用的实际类型生成具体的函数或类实例,这被称为静态多态。模板多态不依赖于继承体系,因此提供了一种更为灵活的多态实现方式。 在C++的多继承里面,怎么知道调用的方法和属性属于哪一个父类?

如果需要指定调用特定父类的方法或属性,应在方法或属性名称前加上相应父类的名称,使用作用域解析操作符(::)。

C++指针和智能指针的区别?智能指针的实现原理是什么?指针和函数指针的区别? 指针和智能指针的区别:指针是C++的核心特性,用于存储对象的内存地址。使用时需要手动分配和释放内存,否则会导致内存泄漏等问题。智能指针则是一种对象,它像常规指针一样,可以指向另一个对象,但它包含更加完善的内存管理机制,可以自动释放它所指向的资源,减少内存泄漏和其他相关错误。智能指针的实现原理:智能指针的实现主要基于RAII(Resource Acquisition Is Initialization)概念。其主要含义是,将一个对象的生命周期(从初始化到销毁)与某项资源的获取和释放(如内存、文件描述符、锁等)绑定起来。当对象销毁时,其对应的资源也随之被释放。例如,shared_ptr智能指针通过引用计数来管理资源,当没有任何指针引用该资源时,资源会被自动释放。指针和函数指针的区别:指针是指向一个内存地址的变量,用于存储和访问对象的地址。函数指针则是指向函数的指针,它可以用于调用函数或传递函数作为参数。 C++什么时候可能出现内存泄漏?如何定位到内存泄漏?

C++可能出现内存泄漏的情况包括但不限于:

动态分配的内存没有被正确释放,例如使用new分配内存后没有使用delete释放;资源分配和释放之间程序提前退出(如异常抛出)导致释放代码未执行;指针变量被覆盖,导致原有的内存地址丢失而无法释放;在程序数据结构中的循环引用,特别是在智能指针未正确使用时。

定位内存泄漏的方法有:

利用C++标准库中的头文件,使用智能指针如std::unique_ptr和std::shared_ptr以帮助自动管理内存;使用内存分析工具,如Valgrind、AddressSanitizer等,它们可以在程序运行时检测内存泄漏;在代码中使用断言和监测,追踪动态内存的分配和释放; 析构函数必须是虚函数吗?

析构函数不是必须

相关推荐: