随笔分类 -  C++相关

C++中的虚函数和纯虚函数
摘要:在C++中,虚函数和纯虚函数都有助于实现多态性,但它们之间有几个重要的区别。总结来说,虚函数允许派生类选择性的重写某个函数,而纯虚函数则是规定了所有派生类都需要提供的某种行为。 一、虚函数 (Virtual Function) 1. 定义: 当你在基类中使用 virtual 关键字声明一个成员函数时 阅读全文

posted @ 2024-12-11 20:42 Hello-World3 阅读(17) 评论(0) 推荐(0) 编辑

C++中的原子操作
摘要:一、概述 C++11提供了一个原子类型 std::atomic<T>, 通过这个原子类型管理的内部变量就可以称之为原子变量,我们可以给原子类型指定 bool、char、int、long、指针 等类型作为模板参数(不支持浮点类型和复合类型)。 原子指的是一系列不可被CPU上下文交换的机器指令,这些指令 阅读全文

posted @ 2024-04-23 16:36 Hello-World3 阅读(465) 评论(0) 推荐(0) 编辑

C++对象内存模型
摘要:一、概述 在编译时,编译器会对成员函数进行重构,让成员函数非成员化,编译器安排this指针作为成员函数的第一个参数,通过this指针可以找到对象的数据成员。 二、有虚函数单继承实验 1. 测试文件 #include <iostream> using namespace std; /* 类大小16B, 阅读全文

posted @ 2024-01-29 17:13 Hello-World3 阅读(43) 评论(0) 推荐(0) 编辑

C++中动态库中全局变量
摘要:一、疑问 1. C++程序中可以使用动态库中的全局变量吗?如果可以两个进程同时链接使用,全局变量的值会相互干扰吗(是否有2份)? 二、实验 1. 实验源文件 lib_file.cpp int g_lib_val = 10; int lib_add(int a, int b) { return a+b 阅读全文

posted @ 2023-12-27 20:59 Hello-World3 阅读(686) 评论(0) 推荐(0) 编辑

C++中的 mutable 关键字
摘要:Parcel 类中 mDataPos 被修饰为 mutable 类型变量。 C++ 中的 mutable 是一个关键字,用于修饰类的成员变量。mutable 关键字的作用是允许被修饰的成员变量在 const 修饰的成员函数中被修改,即使这些函数被声明为 const。 下面是 mutable 关键字的 阅读全文

posted @ 2023-12-22 17:35 Hello-World3 阅读(201) 评论(0) 推荐(0) 编辑

C++中的explicit关键字
摘要:一、简介 explicit关键字可以阻止隐式转换的发生。 举例:C++中只带有一个参数的构造函数,或者或者除了第一个参数外其余参数都有缺省值的多参构造函数,承担了两个角色: (1) 用于构建单参数的类对象。(2)隐含的类型转换操作符。 一个类A的构造函数 A(int i) 就是既可以用来作为构造器, 阅读全文

posted @ 2023-12-20 11:47 Hello-World3 阅读(68) 评论(0) 推荐(0) 编辑

C++中的std::move
摘要:参考:https://zhuanlan.zhihu.com/p/645258818 总结:进行左右值引用转换,避免调用拷贝构造函数,而是使用移动构造函数,避免内存多次分配释放。 阅读全文

posted @ 2023-12-19 10:57 Hello-World3 阅读(11) 评论(0) 推荐(0) 编辑

C++中的构造析构函数—2—虚析构函数
摘要:1. 构造函数不能定义为虚函数,每个对象的虚函数表指针是在构造函数中初始化的,因为构造函数没执行完,所以虚函数表指针还没初始化好。而析构函数可以定义为虚函数,也必须要定义为虚函数,否则在析构上无法体现出多态,导致子类的析构函数不会被调用,可能导致内存泄漏等风险。 2. 实验: #include <i 阅读全文

posted @ 2023-05-03 22:43 Hello-World3 阅读(48) 评论(0) 推荐(0) 编辑

C++经典案例
摘要:1. per-thread的单例模式 //单例子模式,per-thread的单例模式 IPCThreadState* IPCThreadState::self() //IPCThreadState.cpp { if (gHaveTLS.load(std::memory_order_acquire)) 阅读全文

posted @ 2022-07-10 16:08 Hello-World3 阅读(625) 评论(0) 推荐(0) 编辑

C++ std::ofstream 和 std::ifstream 和 文件操作
摘要:1. 简介 C++中对文件进行读写的。 2. 使用Demo #include <iostream> #include <fstream> #include <string> #include <string.h> using namespace std; static constexpr char 阅读全文

posted @ 2022-07-05 23:39 Hello-World3 阅读(2152) 评论(0) 推荐(0) 编辑

C++匿名函数-Lambda表达式
摘要:一、匿名函数简介 1. 为什么存在匿名函数 使用 STL 时,往往会大量用到函数对象,为此要编写很多函数对象类。有的函数对象类只用来定义了一个对象,而且这个对象也只使用了一次,编写这样的函数对象类就有点浪费。 而且,定义函数对象类的地方和使用函数对象的地方可能相隔较远,看到函数对象,想要查看其 op 阅读全文

posted @ 2022-07-04 23:27 Hello-World3 阅读(739) 评论(0) 推荐(0) 编辑

C++ std::string
摘要:1. STL中的 string 类型支持类似java中的直接进行字符串相加,但是不支持相减 #include <iostream> #include <string> using namespace std; int main() { string str = "Hello World"; str 阅读全文

posted @ 2021-06-28 20:59 Hello-World3 阅读(203) 评论(0) 推荐(0) 编辑

C++ STL deque
摘要:一、简介 1. deque(Double Ended Queues,双向队列)和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。 2. 资料网址:http://www.cplusplus.com/reference/deque/deque/ 3.实际上,deque是对vector和 阅读全文

posted @ 2021-03-28 18:41 Hello-World3 阅读(82) 评论(0) 推荐(0) 编辑

C++ STL Vector
摘要:一、简介 1. Vectors 包含着一系列连续存储的元素,其行为和数组类似。 2. 访问Vector中的任意元素或从末尾添加元素都可以在O(1)内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是O(N)。 3. 函数介绍 二、例子 1. vector函数int类型测试 #incl 阅读全文

posted @ 2021-03-28 17:30 Hello-World3 阅读(52) 评论(0) 推荐(0) 编辑

C++ STL几种数据结构对比
摘要:参考:c++容器list、vector、map、set区别:https://www.jb51.net/article/187294.htm 阅读全文

posted @ 2021-03-28 16:40 Hello-World3 阅读(132) 评论(0) 推荐(0) 编辑

C++ STL Set使用
摘要:一、set简介 1. 参考网址:http://www.cplusplus.com/reference/set/set/ 2. set是STL中一种标准关联容器,其键值就是实值,实值就是键值,不可以有重复,所以我们不能通过set的迭代器来改变set的元素的值。它底层使用平衡的搜索树——红黑树实现,插入 阅读全文

posted @ 2021-03-28 15:58 Hello-World3 阅读(102) 评论(0) 推荐(0) 编辑

C++ STL算法
摘要:#include <algorithm> 一、排序 1.九种排序方法代码实现: https://www.jb51.net/article/184369.htm 遍历、排序、反转、合并。。。 阅读全文

posted @ 2021-03-27 19:08 Hello-World3 阅读(43) 评论(0) 推荐(0) 编辑

C++ STL List使用
摘要:一、简介 1. 资料位置,Reference:http://www.cplusplus.com/reference/list/list/ 2. Lists将元素按顺序储存在链表中。与向量(vector)相比, 它允许快速的插入和删除,但是随机访问却比较慢。(vector支持快速随机访问) 3. 下面 阅读全文

posted @ 2021-03-27 16:21 Hello-World3 阅读(193) 评论(0) 推荐(0) 编辑

C++中的构造析构函数—1—基础
摘要:一、构造函数 1. 构造函数:这个成员函数名必须和类名相同,定义时可以有参数,但是不可以有任何返回类型的声明。 2. 构造函数调用的三种方式 Test t1(4); //自动调用构造函数 Test t2 = 5; //自动调用构造函数 Test t3 = Test(6); //主动调用构造函数 3. 阅读全文

posted @ 2021-03-27 15:20 Hello-World3 阅读(150) 评论(0) 推荐(0) 编辑

Mutex::AutoLock介绍
摘要:AutoLock类是定义在Mutex内部的一个类,用于解决lock和unlock必须必须一一对应的问题。unlock这句代码可能会忘记写,从而导致死锁。AutoLock充分利用了C++的构造和析构函数,来达到自动调用unlock函数的目的。 Mutex::Autolock声明和实现: 注意事项: A 阅读全文

posted @ 2019-05-20 16:18 Hello-World3 阅读(4733) 评论(0) 推荐(0) 编辑

导航