0621# C++八股 1.成员初始化列表的概念?以及为什么使用它会快一点?2.重写Override和重载Overload区别 成员初始化列表:用于在构造函数体执行之前初始化成员变量,提供更高效的初始化方式。直接初始化 vs. 赋值初始化:直接初始化避免了多余的默认构造和赋值操作,提高了性能。使用场景:特别适用于必须初始化的成员变量(如常量和引用),以及需要提高效率的情况。
0620# C++八股记录 虚析构函数确保在删除基类指针指向的派生类对象时,派生类的析构函数能够被正确调用,从而防止资源泄漏。虚析构函数支持多态性,即使在使用基类指针操作派生类对象时,也能保证对象的正确析构。虚函数是一种机制,使得在运行时可以根据对象的实际类型调用相应的函数实现,提供了动态绑定的能力。这是C++实现多态性的关键,通过虚函数,基类指针或引用可以调用派生类中的重写函数,实现更灵活和可扩展的代码设计。delete用于释放通过new分配的单个对象的内存。delete[]用于释放通过new[]分配的对象数组的内存。
0613# 3 八股 1.拷贝初始化和直接初始化 因此,编译器不会对该变量进行优化,确保每次访问该变量时都从内存中读取,而不是从寄存器中读取。浅拷贝是指简单地复制对象的所有成员值,包括指针成员的值。因此,修改一个对象的指针成员所指向的内容会影响另一个对象。深拷贝是指不仅复制对象的所有成员值,还会为指针成员分配新的内存,并复制原有内存的内容。:指针指向的内存被释放后,指针没有被重新设置,继续使用该指针会导致未定义行为。解决方法:在声明指针时进行初始化,指向一个有效的对象或设置为。:指针指向的对象在其作用域结束后被销毁,指针继续使用该对象。
0612#chatgpt八股 2.define宏定义 , inline, const和static的区别? 用途:用于定义预处理宏,可以在代码中替换文本。语法特点预处理器指令,在编译之前进行替换。没有类型检查。可以用于常量、函数样式宏等。return 0;#define宏定义用于文本替换,没有类型检查。在编译前由预处理器处理。适用于定义常量或简单的函数样式宏。inline用于建议编译器将函数展开,减少函数调用开销。适用于小而简单的函数。const用于定义常量或不可修改的变量,提供类型安全。适用于需要保证值不变的场景。static。
0612#chatgpt八股 1.new,malloce // delete,free new/delete和是现代 C++ 中推荐使用的内存管理工具,它们提供了自动内存管理,简化了内存管理的代码。和替代了传统的new和delete,减少了内存泄漏和其他内存管理相关的问题。推荐使用智能指针,尤其是在现代 C++ 编程中,除非有特殊需求,否则尽量避免使用手动的mallocfree和newdelete。
0612#连续子数组最大和 小红拿到了一个数组,她希望进行最多一次操作:将一个元素修改为x。小红想知道,最终的连续子数组最大和最大是多少?第一行输入两个正整数n和x。代表数组的大小,以及小红可以修改成的元素。输出 t 行,每行输出一个整数,代表连续子数组的最大和。第二行输入n个正整数a_i,代表小红拿到的数组。第一行输入一个正整数t,代表询问次数。
20240422-算法复习打卡day61||代码随想录算法训练营打卡总结 不知不觉也打卡了60天,期间也有拖延,也有腹泻式打卡(其实就是写完leetcode不想再编写一篇blog,懒了)很多的感想记录在了obsidian文档中,回头看看还是很有成就感,一方面是系统地啃完了一遍,也结合自己情况详细的做了tips,一方面是把obsidian从未使用到入门了,以后也会继续用obsidian自己记录,不过不一定会截取内容发csdn了(还是感觉发上来有点麻烦)题外话:迟到两天的总结,因为周末去看了F1-上海站。2004年在K看台的小周,在2024年终于走到了上赛的发车格。