自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [C++面试] 初始化相关面试点深究

int x;拷贝初始化—— 有赋值符int y = 5;​int z(6);int a{7};

2025-04-09 22:55:11 506

原创 [C++面试] C++中各类括号的差异:[]、{}、<>、()

()[]{}<>

2025-04-07 23:48:02 667

原创 [C++面试] explicit关键字面试点总结

explicitGoogle C++规范建议所有单参数构造函数必须加explicit,除非明确需要隐式转换(如从构造)。

2025-04-05 23:17:17 700

原创 C++书籍推荐1:C++进阶心法

书籍以C语言基础为起点(如指针、数组、volatile关键字等),逐步深入C++核心机制,包括内存管理、面向对象编程、异常处理、C++11/14新标准(如右值引用、移动语义)等。个人觉得,有一定的深度,但存在极少部分内容的准确性待商榷。可以看看作者列出的点,加深、巩固。《C++进阶心法》由吕吕、王琥合著,北京航空航天大学出版社于2019年出版。

2025-04-05 17:56:05 79

原创 [C++面试] 如何在特定内存位置上分配内存、构造对象

new面试-高阶题(可以主动讲给面试官),适用于内存池、高性能场景或需要精确控制内存布局的编程需求。

2025-04-05 16:15:52 576

原创 [C++面试] new、delete相关面试点

​(如访问野指针,引发崩溃)

2025-04-04 23:07:30 1022

原创 [C++面试] 智能指针面试点(重点)续4

允许转换的方向unique_ptr→shared_ptr(通过移动语义)。​禁止转换的方向shared_ptr→unique_ptr之间仅允许右值移动赋值;unique_ptr可通过右值(如std::move或临时对象)赋值给shared_ptr,但左值不行。

2025-04-01 23:13:04 356

原创 [C++面试] 智能指针面试点(重点)续3

reset()在中,其核心作用是 ​释放当前管理的资源​(若存在),并可以选择绑定新的资源。step1:若unique_ptr当前持有资源(即非空指针),调用reset()会立即通过delete或自定义删除器释放该资源step2:若reset()接受参数(如),则释放旧资源后,unique_ptr会接管新资源的所有权// 释放原资源(int(4)),绑定新资源(int(20))// 初始绑定资源(值为4的int对象)// 释放资源并置空,不再绑定任何资源执行后状态,表示无资源绑定。原资源。

2025-03-30 23:46:02 957

原创 [C++面试] 智能指针面试点(重点)续2

[C++面试] RAII资源获取即初始化(重点)-优快云博客[C++面试] 智能指针面试点(重点)-优快云博客[C++面试] 智能指针面试点(重点)续1-优快云博客智能指针(如和)不支持直接的加减操作。这是因为智能指针的设计目标是安全地管理资源所有权,而非像原始指针那样进行内存地址的算术运算。五法则(Rule of Five)是指:当一个类需要自定义析构函数、拷贝构造函数或拷贝赋值运算符时,通常也需要自定义移动构造函数和移动赋值运算符 是一种独占式智能指针,同一时间只能有一个 指向某个对象。为了保证

2025-03-30 11:52:15 994

原创 [C++面试] 智能指针面试点(重点)续1

默认删除器:使用delete释放对象,无法处理非堆内存(如文件句柄)。自定义删除器:可释放任意资源(如文件、网络连接),且不影响引用计数的线程安全。// 自定义删除器释放文件句柄});

2025-03-29 11:44:16 1093

原创 [C++面试] 智能指针面试点(重点)

C++面试] RAII资源获取即初始化(重点)-优快云博客智能指针是一种类模板,用于管理动态分配的内存,能在对象生命周期结束时自动释放内存,避免内存泄漏。在传统的 C++ 中,使用new分配内存后,必须手动使用delete释放,若忘记或在异常情况下未执行delete,就会导致内存泄漏。而智能指针利用 C++ 的 RAII(资源获取即初始化)技术,在对象构造时获取资源,在析构时释放资源,大大提高了代码的安全性。// 当 ptr 离开作用域时,内存会自动释放return 0;

2025-03-27 23:45:09 1028

原创 [C++面试] RAII资源获取即初始化(重点)

RAII(Resource Acquisition Is Initialization,资源获取即初始化)是 C++ 的核心编程范式,核心思想是 ​。

2025-03-26 23:18:27 1086

原创 [C++面试] span<char>和string_view的差别

​2、string_view 仅限字符类型,隐式假设数据为字符串(如自动处理空终止符) 提供字符串专用方法,如 (截取子串)、(查找字符 / 子串)、(判断是否以某子串开头)等,完全围绕字符串语义设计,适合字符串处理 存储指针和字符数,可能包含空终止符标记 可能因隐式空终止符导致边界检查开销 因隐式绑定字符类型,可能因误用非字符串数据(如二进制数据)导致未定义行为​3、span 无类型限制,需显式指定数据类型,支持泛型编程(如处理二进制缓冲区) 提供通用序列操

2025-03-26 21:35:00 498

原创 [C++面试] 你了解视图吗?

它提供了对序列(如数组、容器等)的非拥有性、只读或可写的访问。(就像是个透明的放大镜,它能让你去看一组数据,但它自己不拥有这些数据。避免数据的复制,提高性能。提供统一的接口来处理不同类型的序列。实现延迟计算,只有在需要时才进行实际的数据处理。// 创建一个视图,它是对numbers向量的一个抽象表示return 0;在这个例子中,创建了一个视图,它包含了numbers向量中的所有元素。通过视图可以遍历这些元素,而不需要复制数据。继承类,以确保视图符合视图的接口要求。

2025-03-25 23:20:43 856

原创 [C++面试] 你了解transform吗?

transform。

2025-03-24 23:45:27 626

原创 [C++面试] 迭代器面试点(难点)

需要定义迭代器类,并实现一些必要的操作符重载,如++==!等。// 自定义容器类private:T* data;int size;public:// 自定义迭代器类private:T* ptr;return ptr!it!

2025-03-20 23:34:31 746

原创 [C++面试] 标准容器面试点

Student。

2025-03-17 22:44:40 646

原创 [C++面试] 关于deque

底层由多个固定大小的缓冲区组成,通过“中控器”(通常是一个指针数组)管理这些缓冲区的地址。的随机访问需通过中控器定位到具体缓冲区,再计算元素在缓冲区内的偏移,多了一层间接寻址;由多个固定大小的缓冲区组成,通过中控器(指针数组)管理。在中间插入/删除元素:可能导致后续元素的迭代器失效(需移动元素)。,支持在头部和尾部高效插入/删除元素,同时允许随机访问。直接通过连续内存的基地址+偏移量访问,无需额外查找步骤。在插入/删除元素时,所有后续迭代器均失效;仅在涉及缓冲区重新分配时影响部分迭代器。

2025-03-16 23:42:52 938

原创 [C++面试] 对通透比较器了解多少?(较少涉及,可跳过)

在 C++ 中,比较器是一个可调用对象(函数、函数对象或 Lambda 表达式),用于定义元素之间的比较规则。用途:通常作为参数传递给标准库中的排序函数或关联容器,以指定元素的顺序。// 使用 Lambda 表达式作为比较器进行降序排序});Lambda 表达式作为比较器传递给std::sort函数,用于定义降序排序规则。// 定义自定义比较器函数对象public:public:int age;// 使用自定义比较器进行排序return 0;

2025-03-11 23:22:39 359

原创 [C++面试] 迭代器与指针有什么区别?

迭代器:一种抽象概念,是为了统一对不同容器的访问方式而设计的,它是容器提供的一种接口。迭代器适用于所有标准库容器,如。元素是以位的形式存储的,不能直接对单个位进行常规的指针操作,因此普通的指针无法直接作为。指针:一种内置的数据类型,直接指向内存地址;指针主要用于操作数组或动态分配的内存块;元素分配一个字节(8 位)的内存空间,而是采用位压缩的方式。为了节省内存,不会像普通的。操作符来访问对象的成员。

2025-03-08 16:02:04 442

原创 [C++面试] vector 面试点总结

vector动态数组容器,支持自动扩容、随机访问和连续内存存储。

2025-03-02 23:43:21 1147

原创 char data[len_row][len_col]能直接讲data传递给char **吗?

数组名会 “退化” 为指向其首元素的指针。也就是 char (*)[len_col]。而不是char **如果传入的是 char *arr[10];类型传递给相应函数,因为它可以理解为是指向。

2024-12-28 10:36:16 161

原创 C++杂记

可以在类中重载该运算符,就可以像使用函数一样使用对象。只要重载了(),这个类就叫函数对象(可调用对象)1、() —— 函数调用运算符。

2024-12-28 09:57:11 225

原创 lambda初探2:与函数对象的区别

1、lambda表达式不需要显式定义一个类。它在编译期由编译器自动生成一个闭包类,在运行时由这个闭包类产生一个对象。

2024-12-21 18:37:20 116

原创 lambda初探(一)

退出lambda表达式后,foo外层的值不变化。foo内部的x,值是持续的,像static。即使退出foo函数后,值的状态依然保持。foo运行了两次,内部x的值,也变化了两次。外层x的值变化,并不影响foo内部。发生捕获时,拿到x,y的值。

2024-12-21 09:53:06 303

原创 这段代码会调用几次拷贝构造?

【代码】这段代码会调用几次拷贝构造?

2024-08-25 16:59:02 157

原创 lambda 表达式可以传递引用为什么需要引用捕获

【代码】lambda 表达式可以传递引用为什么需要引用捕获。

2024-08-21 23:32:59 243

原创 RAII 资源获取即初始化

3、典型应用:智能指针、容器等(unique_lock、lock_guard)1、在构造函数中初始化资源。2、在析构函数中释放资源。

2024-08-15 22:45:36 152

原创 atomic

能用原子解决的,用互斥量也可以解决(m_mutex.lock();原子操作的效率要更高一点。一般:++、--、+=、-=、&=、|=、^=等简单运算符的运算是原子的,其他的一些复杂表达式的运算就不一定是原子的了。

2024-08-15 21:56:25 120

原创 如何从线程返回结果?

std::async具有不确定性。系统如果决定延迟运行(std::launch::deferred),则std::async创建的任务不会立即执行。可以看出,std::async与std::thread的主要区别在于:当系统资源紧张时,调用std::thread有可能导致线程创建失败,程序崩溃。如果不需要拿到返回值。std::packaged_task类模板,把各种可调用对象包装起来,方便给线程入口函数调用。std::async —— 函数模板,启动一个异步任务,返回一个std::future对象。

2024-08-14 23:31:08 421

原创 Cpp学习《C++新经典》多线程0812

第三版代码:引入条件变量(类),与互斥量配合工作。第二版代码:改为双重锁定:优化了一步。

2024-08-12 23:59:31 307

原创 如何自己写vector-利用可变参模板+引用折叠,同时实现空间配置器

0708——学习笔记。

2024-07-08 23:32:36 115

原创 Cpp模板-template、typename(二)

T —— 类型参数,也叫模板参数 中包括两种类型参数:用typename/class修饰的是类型模板参数,是类型说明符。另外的称为非类型模板参数。与函数模板一样,非类型参数不允许使用浮点型、类对象(对象的引用可以)、void。

2024-06-02 18:34:41 515

原创 Cpp模板-template、typename(一)

2、template 为了与定义类的class区分,用typename来定义类型参数。T可以随便用其他占位符。模板参数名的作用域仅限于函数模板范围内,且每个模板参数要在函数的形参列表中至少出现一次。——《C++面向对象程序设计(杜茂康)》C7。1、模板是类型安全的。

2024-05-30 23:54:23 334

原创 5-29 宏的要点

4、尽可能使用const变量,而不是宏常量。2、简单宏性能优于常规函数调用。3、宏不支持任何形式的类型安全。1、宏函数可以减少代码行。

2024-05-29 23:48:34 152

原创 多态 polymorphism

1、没有继承关系的类,分配完内存后,优先给虚表指针赋值,再列表初始化,再构造函数。有继承关系的类,分配完内存后,先基类构造,后续同上。2、将函数声明(只能是类中的)为虚函数。告诉编译器,调用复函的版本。将子类对象视为父类,并执行子类的函数实现。

2024-05-26 23:46:42 144

原创 5-26 Cpp学习笔记

继承层次结构外,也不能通过子类实例访问基类的成员。在继承层次结构中,子类的子类能访问Base类的public、protected。:base类的public、protected,只能被Derived类使用,而无法通过Derived实例来使用。6、避免切除问题(类的截断),不要按值传递参数,以指向基类的指针或者const引用的方式。1、如果子类实现了基类的函数,返回值、参数都相同,就覆盖了基类的函数。8、final —— 不能用做基类,禁止被继承。无论什么继承,子类都不能访问父类的私有成员。

2024-05-26 21:49:11 469

原创 5-22 一些知识点

— 《21天学通C++》

2024-05-22 22:56:13 292

原创 constexpr

让编译器计算并插入函数的结果,而不是插入计算结果的指令。—— 《21天学通c++》强推。constexpr 声明操作。

2024-05-22 00:00:03 211

原创 friend:函数、类

main函数中可以直接通过调用DisplayAge函数去访问Human的私有成员。DisplayAge是一个全局函数。声明类是自己的朋友,朋友就可以访问私有成员。—— 《21天学通C++》

2024-05-20 23:54:04 305

空空如也

空空如也

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

TA关注的人

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