自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 明确阻止编译器生成代码

摘要:C++中禁止类自动生成拷贝构造函数的三种方法:1)声明为私有函数(存在友元访问风险);2)通过私有拷贝构造的基类继承实现(编译时报错);3)C++11推荐使用"=delete"语法(编译时直接阻止调用)。第三种方法最规范高效,利用编译器函数调用表检查标记来实现。这些方法可防止不期望的对象拷贝行为。

2025-08-19 22:36:31 250

原创 part-5

摘要: 本文提供了实用的英语对话技巧:1) 对多人说话用"How about you guys?";2) 用"So"或"By the way"转换话题;3) 用"really/oh"或重复问题表达兴趣;4) 通过升调重复惊讶信息;5) 礼貌拒绝话题可用"I'd rather not talk about that";6) 冒犯他人时及时道歉。这些技巧涵盖日常交流的常见场景,帮助提升对话的自然度和礼貌性。(14

2025-07-18 22:41:52 433

原创 了解C++默默编写并调用了哪些函数

本文讨论了编译器自动生成特殊成员函数的规则及限制。当类未声明拷贝构造、拷贝赋值、析构函数时,编译器会在需要时自动生成默认版本,其行为是逐成员拷贝。但若类包含引用成员或const成员(如示例中的string&和const T),编译器将无法生成拷贝赋值运算符,因为引用不可重新绑定,const成员不可修改。同样,当基类的拷贝赋值运算符为private时,派生类也无法生成该函数。这些限制需要开发者在设计类时特别注意。

2025-07-18 22:05:18 253

原创 C/C++对象初始化

摘要:C/C++中对象初始化规则复杂,C部分不保证初始化,而C++部分如vector保证初始化。构造函数效率比较显示,初始化列表方式(直接调用拷贝构造函数)比赋值方式更高效。使用静态变量时,通过函数返回静态对象可确保构造完成(如static Widget& object(){static Widget data; return data;}),避免跨文件使用时未初始化的问题。初始化列表顺序应与成员声明顺序一致以避免警告。

2025-07-18 21:17:52 153

原创 尽可能使用const

C++中const指针的用法总结:const在*左侧表示指向常量数据,右侧表示指针本身为常量;两者都有则都不可修改。成员函数后加const表示该函数不能修改对象成员变量(静态变量除外),const对象只能调用const成员函数。const和非const成员函数被视为不同函数。虽然存在修改const变量的方法(如mutable),但实际项目中不推荐使用。这些概念在编程中经常遇到,理解const的位置关系对正确使用指针至关重要。

2025-07-18 20:35:01 172

原创 part-4

商务英语常用短语指南 本文介绍了多个商务英语中常用的短语及其用法: Get through 表示完成任务(例:完成大量工作) Knuckle down 意为专注努力(例:按时完成项目) Go over 指仔细检查(例:核对报告) Bring up 指提出话题(例:在会议中讨论) Go on 表示继续发言(例:被打断后继续说明) Break down 意为分解任务(例:简化复杂流程) Point out 指指出要点(例:提醒他人注意细节) Think through 强调深思熟虑(例:评估决策的可行性) 这些

2025-07-16 23:24:52 1009

原创 避免滥用宏

《Effective C++》条款二建议优先使用const、enum和inline替代#define宏定义。对于变量宏,const常量能提供更好的可维护性和调试信息;对于函数宏,inline模板函数可避免参数多次求值和不可预测行为。虽然预处理器在包含文件和编译控制上仍有必要,但在日常编程中应尽量减少#define的使用,以提高代码质量和可维护性。该条款强调编译器优于预处理器的原则,适合在复杂项目中实践。

2025-07-13 22:42:52 392

原创 职场口语学习记录-part3

Remind means: Want to make people keep someone or something in their mindRemember means: Keep that person or thing in your mindCase 1: I would like to remind everyone that registration for the conference ends on Thursday this weekUntil means: If something

2025-07-13 16:12:59 427

原创 职场口语学习记录part-2

Means: to try to find out more information or facts about something Case 1: The customer didn't accept our new offer. We're not sure why, so the boss has asked me to look into it.Case 2: I'm very sorry about the delay. I'll look into it immediately and get

2025-07-12 21:52:34 647

原创 M1芯片Mac配置vscode + cmake

最近一直想自学一下cmake的一些知识,正好记录一下M1芯片的mac配置vscode+cmake的一个flow。

2024-11-09 18:55:16 634

原创 NDEBUG宏和assert()

在coding的过程中还是要尽可能的多加一些assert()来方便coder定位问题,但是当release的时候一般会加上NDEBUG宏来关闭assert,防止对使用者不友好。所以在使用assert的时候要考虑这个问题,防止添加NDEBUG宏后导致结果不稳定。

2024-09-06 13:56:27 341

原创 stl容器遍历中增删元素对迭代器的影响

在以上代码中,如果是插入元素,则可能不会影响已存在的元素的迭代器,因为push_back或者emplace_back的做法是将终止迭代器指向新插入的元素,但是这样思考并没有考虑vector的容量。若vector的容量不够的话,则会为vector开辟一个原来容量两倍的新的内存,并把数据迁移到新的内存地址,这样一来就会导致原有迭代器失效,便会发生未定义的行为。map或set: 在遍历的过程中删除元素可能会导致迭代器失效,若在遍历的过程中添加元素,则可能会打乱原有顺序,导致迭代器位置失效。

2024-05-14 19:10:51 382 2

原创 算法泛化过程(摘自STL源码剖析)

有时存在一些比较底层且常用的算法,这些算法需要被复用,并且应该独立于特定的容器(其实这这也是STL中算法的思想)

2024-01-17 09:05:43 550

原创 vector<bool>

vector本质上并不是一个STL容器,他底层通过位压缩技术,将每个bool值压缩为1位来进行存储,以减小向量对象的内存占用。

2024-01-15 19:32:24 1766 1

原创 emplace_back和push_back的异同

虽然在性能方面emplace_back优于push_back,但emplace_back也有一些缺点:1. emplace_back一般发生错误都会在比较深的位置,而push_back则更容易定位问题2. push_back是函数,可以支持隐式转换,而emplace_back本质上是模板,不支持隐式转换。

2024-01-12 19:21:35 1749 1

原创 C++智能指针

最初,c++98首先引入了auto_ptr, 在接下来的c++11中又引入了unique_ptr, shared_ptr以及weak_ptr。

2024-01-11 20:29:14 1032 1

原创 c++中各种类的继承关系

虚公有继承主要用于解决菱形继承问题,在菱形继承的子类中只会保存一份父类的副本,可以解决菱形继承带来的内存浪费和二义性问题(非必要不要使用菱形继承结构)。基类中的公有成员在子类中仍然是公有成员,保护成员在子类中是保护成员,私有成员在子类中不可访问。基类的公有和保护成员在子类中变为私有成员,基类的私有成员在子类中不可访问。基类的公有和保护成员在子类中变为保护成员,私有成员在子类中不可访问。

2024-01-11 17:52:55 418 3

原创 c++中const限定符的使用

1. const T* v,此时2. T* const v, 此时3. const T* const c, 此时。

2024-01-10 17:46:15 435 3

原创 c++编译选项含义(更新中)

O1: 这是一个较低的优化级别,它启用了一些基本的代码优化技术,如删除未使用的变量、简化常量表达式、内联简短函数等。-Wextra: 表示开启额外的警告信息,与-Wall不同,该选项提供了更多的警告选项,包括了一些非常细微的问题。O3: 这是一个更高的优化级别,它可能使用更复杂的优化技术,如向量化、循环变量优化、函数分析等。-rapth=: 用于连接动态库,在程序运行时指定动态库的搜索路径(有时所需lib不在环境变量中又不想配置时,可以使用该选项来指定)。-L : 添加库文件的搜索路径。

2024-01-08 09:19:08 810 1

原创 LeetCode每日一刷 2427

算法每日一刷

2023-04-05 22:44:21 145 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除