
c++
文章平均质量分 52
冰箱里有碗
人生是旷野,慢慢来
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[C++面试] 基础题 11~20
构造函数用于对象的创建,不同场景可能需要不同的初始化参数。语法上:构造函数与类名相同且,但允许参数列表不同。C++标准规定析构函数析构函数在对象销毁时由编译器,且。若允许重载,编译器无法确定应调用哪个版本。析构函数的核心职责是(如内存、文件句柄等),通常需要统一的清理逻辑。若需差异化处理,应通过成员变量状态控制,而非重载。原创 2025-05-24 18:32:28 · 786 阅读 · 0 评论 -
[C++面试] 基础题 1~10
若派生类定义了与基类同名但参数不同的函数(无论基类是否为虚函数),基类函数会被隐藏,而非覆盖。关键字,强制检查派生类函数是否真正覆盖基类虚函数,避免因参数不匹配导致的隐藏错误。内(如同一个类中),允许存在多个同名函数,但。(派生类与基类之间),派生类重新定义基类的。这会导致编译错误,提示重复定义了同一个函数。参数类型、个数、顺序(容易忽略)(参数类型、个数或顺序不同)原创 2025-05-22 23:00:34 · 564 阅读 · 0 评论 -
[C++面试] const相关面试题
constconst。原创 2025-05-18 23:40:49 · 400 阅读 · 0 评论 -
[C++面试] lambda面试点
Lambda 是 C++11 引入的匿名函数对象,用于创建轻量级的可调用对象。[捕获列表] (参数列表) mutable(可选) 异常声明(可选) -> 返回类型(可选) { 函数体 }部分是否必须说明捕获列表[]必须不可省略,定义变量捕获方式函数体{}必须不可为空(但可为空语句[]{}参数列表()可选若无参数可省略mutable可选仅在需修改按值捕获的变量时使用返回类型->可选多语句或复杂逻辑时需显式指定异常声明可选极少使用,如。原创 2025-05-15 23:37:40 · 1114 阅读 · 0 评论 -
[C++面试] 初始化相关面试点深究
int x;拷贝初始化—— 有赋值符int y = 5;int z(6);int a{7};原创 2025-04-09 22:55:11 · 605 阅读 · 0 评论 -
[C++面试] C++中各类括号的差异:[]、{}、<>、()
()[]{}<>原创 2025-04-07 23:48:02 · 808 阅读 · 0 评论 -
[C++面试] explicit关键字面试点总结
explicitGoogle C++规范建议所有单参数构造函数必须加explicit,除非明确需要隐式转换(如从构造)。原创 2025-04-05 23:17:17 · 751 阅读 · 0 评论 -
[C++面试] 如何在特定内存位置上分配内存、构造对象
new面试-高阶题(可以主动讲给面试官),适用于内存池、高性能场景或需要精确控制内存布局的编程需求。原创 2025-04-05 16:15:52 · 711 阅读 · 0 评论 -
[C++面试] new、delete相关面试点
(如访问野指针,引发崩溃)原创 2025-04-04 23:07:30 · 1073 阅读 · 0 评论 -
[C++面试] 智能指针面试点(重点)续4
允许转换的方向unique_ptr→shared_ptr(通过移动语义)。禁止转换的方向shared_ptr→unique_ptr之间仅允许右值移动赋值;unique_ptr可通过右值(如std::move或临时对象)赋值给shared_ptr,但左值不行。原创 2025-04-01 23:13:04 · 389 阅读 · 0 评论 -
[C++面试] 智能指针面试点(重点)续3
reset()在中,其核心作用是 释放当前管理的资源(若存在),并可以选择绑定新的资源。step1:若unique_ptr当前持有资源(即非空指针),调用reset()会立即通过delete或自定义删除器释放该资源step2:若reset()接受参数(如),则释放旧资源后,unique_ptr会接管新资源的所有权// 释放原资源(int(4)),绑定新资源(int(20))// 初始绑定资源(值为4的int对象)// 释放资源并置空,不再绑定任何资源执行后状态,表示无资源绑定。原资源。原创 2025-03-30 23:46:02 · 1020 阅读 · 0 评论 -
[C++面试] 智能指针面试点(重点)续2
[C++面试] RAII资源获取即初始化(重点)-优快云博客[C++面试] 智能指针面试点(重点)-优快云博客[C++面试] 智能指针面试点(重点)续1-优快云博客智能指针(如和)不支持直接的加减操作。这是因为智能指针的设计目标是安全地管理资源所有权,而非像原始指针那样进行内存地址的算术运算。五法则(Rule of Five)是指:当一个类需要自定义析构函数、拷贝构造函数或拷贝赋值运算符时,通常也需要自定义移动构造函数和移动赋值运算符 是一种独占式智能指针,同一时间只能有一个 指向某个对象。为了保证原创 2025-03-30 11:52:15 · 1046 阅读 · 0 评论 -
[C++面试] 智能指针面试点(重点)续1
默认删除器:使用delete释放对象,无法处理非堆内存(如文件句柄)。自定义删除器:可释放任意资源(如文件、网络连接),且不影响引用计数的线程安全。// 自定义删除器释放文件句柄});原创 2025-03-29 11:44:16 · 1287 阅读 · 0 评论 -
[C++面试] RAII资源获取即初始化(重点)
RAII(Resource Acquisition Is Initialization,资源获取即初始化)是 C++ 的核心编程范式,核心思想是 。原创 2025-03-26 23:18:27 · 1168 阅读 · 0 评论 -
[C++面试] span<char>和string_view的差别
2、string_view 仅限字符类型,隐式假设数据为字符串(如自动处理空终止符) 提供字符串专用方法,如 (截取子串)、(查找字符 / 子串)、(判断是否以某子串开头)等,完全围绕字符串语义设计,适合字符串处理 存储指针和字符数,可能包含空终止符标记 可能因隐式空终止符导致边界检查开销 因隐式绑定字符类型,可能因误用非字符串数据(如二进制数据)导致未定义行为3、span 无类型限制,需显式指定数据类型,支持泛型编程(如处理二进制缓冲区) 提供通用序列操原创 2025-03-26 21:35:00 · 562 阅读 · 0 评论 -
[C++面试] 你了解视图吗?
它提供了对序列(如数组、容器等)的非拥有性、只读或可写的访问。(就像是个透明的放大镜,它能让你去看一组数据,但它自己不拥有这些数据。避免数据的复制,提高性能。提供统一的接口来处理不同类型的序列。实现延迟计算,只有在需要时才进行实际的数据处理。// 创建一个视图,它是对numbers向量的一个抽象表示return 0;在这个例子中,创建了一个视图,它包含了numbers向量中的所有元素。通过视图可以遍历这些元素,而不需要复制数据。继承类,以确保视图符合视图的接口要求。原创 2025-03-25 23:20:43 · 953 阅读 · 0 评论 -
[C++面试] 你了解transform吗?
transform。原创 2025-03-24 23:45:27 · 711 阅读 · 0 评论 -
[C++面试] 迭代器面试点(难点)
需要定义迭代器类,并实现一些必要的操作符重载,如++==!等。// 自定义容器类private:T* data;int size;public:// 自定义迭代器类private:T* ptr;return ptr!it!原创 2025-03-20 23:34:31 · 804 阅读 · 0 评论 -
[C++面试] 标准容器面试点
Student。原创 2025-03-17 22:44:40 · 700 阅读 · 0 评论 -
[C++面试] 关于deque
底层由多个固定大小的缓冲区组成,通过“中控器”(通常是一个指针数组)管理这些缓冲区的地址。的随机访问需通过中控器定位到具体缓冲区,再计算元素在缓冲区内的偏移,多了一层间接寻址;由多个固定大小的缓冲区组成,通过中控器(指针数组)管理。在中间插入/删除元素:可能导致后续元素的迭代器失效(需移动元素)。,支持在头部和尾部高效插入/删除元素,同时允许随机访问。直接通过连续内存的基地址+偏移量访问,无需额外查找步骤。在插入/删除元素时,所有后续迭代器均失效;仅在涉及缓冲区重新分配时影响部分迭代器。原创 2025-03-16 23:42:52 · 1008 阅读 · 0 评论 -
[C++面试] 迭代器与指针有什么区别?
迭代器:一种抽象概念,是为了统一对不同容器的访问方式而设计的,它是容器提供的一种接口。迭代器适用于所有标准库容器,如。元素是以位的形式存储的,不能直接对单个位进行常规的指针操作,因此普通的指针无法直接作为。指针:一种内置的数据类型,直接指向内存地址;指针主要用于操作数组或动态分配的内存块;元素分配一个字节(8 位)的内存空间,而是采用位压缩的方式。为了节省内存,不会像普通的。操作符来访问对象的成员。原创 2025-03-08 16:02:04 · 491 阅读 · 0 评论 -
[C++面试] vector 面试点总结
vector动态数组容器,支持自动扩容、随机访问和连续内存存储。原创 2025-03-02 23:43:21 · 1205 阅读 · 0 评论 -
char data[len_row][len_col]能直接讲data传递给char **吗?
数组名会 “退化” 为指向其首元素的指针。也就是 char (*)[len_col]。而不是char **如果传入的是 char *arr[10];类型传递给相应函数,因为它可以理解为是指向。原创 2024-12-28 10:36:16 · 181 阅读 · 0 评论 -
lambda初探2:与函数对象的区别
1、lambda表达式不需要显式定义一个类。它在编译期由编译器自动生成一个闭包类,在运行时由这个闭包类产生一个对象。原创 2024-12-21 18:37:20 · 131 阅读 · 0 评论 -
lambda初探(一)
退出lambda表达式后,foo外层的值不变化。foo内部的x,值是持续的,像static。即使退出foo函数后,值的状态依然保持。foo运行了两次,内部x的值,也变化了两次。外层x的值变化,并不影响foo内部。发生捕获时,拿到x,y的值。原创 2024-12-21 09:53:06 · 327 阅读 · 0 评论 -
这段代码会调用几次拷贝构造?
【代码】这段代码会调用几次拷贝构造?原创 2024-08-25 16:59:02 · 172 阅读 · 0 评论 -
lambda 表达式可以传递引用为什么需要引用捕获
【代码】lambda 表达式可以传递引用为什么需要引用捕获。原创 2024-08-21 23:32:59 · 293 阅读 · 0 评论 -
RAII 资源获取即初始化
3、典型应用:智能指针、容器等(unique_lock、lock_guard)1、在构造函数中初始化资源。2、在析构函数中释放资源。原创 2024-08-15 22:45:36 · 170 阅读 · 0 评论 -
atomic
能用原子解决的,用互斥量也可以解决(m_mutex.lock();原子操作的效率要更高一点。一般:++、--、+=、-=、&=、|=、^=等简单运算符的运算是原子的,其他的一些复杂表达式的运算就不一定是原子的了。原创 2024-08-15 21:56:25 · 132 阅读 · 0 评论 -
如何从线程返回结果?
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 · 446 阅读 · 0 评论 -
Cpp学习《C++新经典》多线程0812
第三版代码:引入条件变量(类),与互斥量配合工作。第二版代码:改为双重锁定:优化了一步。原创 2024-08-12 23:59:31 · 323 阅读 · 0 评论 -
如何自己写vector-利用可变参模板+引用折叠,同时实现空间配置器
0708——学习笔记。原创 2024-07-08 23:32:36 · 125 阅读 · 0 评论 -
Cpp模板-template、typename(二)
T —— 类型参数,也叫模板参数 中包括两种类型参数:用typename/class修饰的是类型模板参数,是类型说明符。另外的称为非类型模板参数。与函数模板一样,非类型参数不允许使用浮点型、类对象(对象的引用可以)、void。原创 2024-06-02 18:34:41 · 566 阅读 · 0 评论 -
Cpp模板-template、typename(一)
2、template 为了与定义类的class区分,用typename来定义类型参数。T可以随便用其他占位符。模板参数名的作用域仅限于函数模板范围内,且每个模板参数要在函数的形参列表中至少出现一次。——《C++面向对象程序设计(杜茂康)》C7。1、模板是类型安全的。原创 2024-05-30 23:54:23 · 367 阅读 · 0 评论 -
5-29 宏的要点
4、尽可能使用const变量,而不是宏常量。2、简单宏性能优于常规函数调用。3、宏不支持任何形式的类型安全。1、宏函数可以减少代码行。原创 2024-05-29 23:48:34 · 160 阅读 · 0 评论 -
多态 polymorphism
1、没有继承关系的类,分配完内存后,优先给虚表指针赋值,再列表初始化,再构造函数。有继承关系的类,分配完内存后,先基类构造,后续同上。2、将函数声明(只能是类中的)为虚函数。告诉编译器,调用复函的版本。将子类对象视为父类,并执行子类的函数实现。原创 2024-05-26 23:46:42 · 156 阅读 · 0 评论 -
5-26 Cpp学习笔记
继承层次结构外,也不能通过子类实例访问基类的成员。在继承层次结构中,子类的子类能访问Base类的public、protected。:base类的public、protected,只能被Derived类使用,而无法通过Derived实例来使用。6、避免切除问题(类的截断),不要按值传递参数,以指向基类的指针或者const引用的方式。1、如果子类实现了基类的函数,返回值、参数都相同,就覆盖了基类的函数。8、final —— 不能用做基类,禁止被继承。无论什么继承,子类都不能访问父类的私有成员。原创 2024-05-26 21:49:11 · 477 阅读 · 0 评论 -
5-22 一些知识点
— 《21天学通C++》原创 2024-05-22 22:56:13 · 302 阅读 · 0 评论 -
constexpr
让编译器计算并插入函数的结果,而不是插入计算结果的指令。—— 《21天学通c++》强推。constexpr 声明操作。原创 2024-05-22 00:00:03 · 223 阅读 · 0 评论 -
friend:函数、类
main函数中可以直接通过调用DisplayAge函数去访问Human的私有成员。DisplayAge是一个全局函数。声明类是自己的朋友,朋友就可以访问私有成员。—— 《21天学通C++》原创 2024-05-20 23:54:04 · 319 阅读 · 0 评论