c/c++
文章平均质量分 67
可能只会写BUG
这个作者很懒,什么都没留下…
展开
-
c++面试题
浅拷贝:浅拷贝在复制对象时,只复制对象中的基本数据类型成员和指针值,而不复制指针指向的内存内容。这意味着复制后的对象中的指针将与原对象共享同一块内存。如果某个对象被析构,而该对象的指针指向的内存也被释放,那么其他共享同一内存的对象可能会访问已释放的内存,导致未定义行为甚至程序崩溃。这种情况称为“双重释放”(double free)。在C++中,如果没有为类定义自定义的拷贝构造函数,编译器提供的默认拷贝构造函数就是浅拷贝。原创 2024-09-20 11:02:16 · 415 阅读 · 0 评论 -
c++面试题
TOCTOC。原创 2024-09-20 11:01:43 · 263 阅读 · 0 评论 -
c++面试题
浅拷贝:浅拷贝在复制对象时,只复制对象中的基本数据类型成员和指针值,而不复制指针指向的内存内容。这意味着复制后的对象中的指针将与原对象共享同一块内存。如果某个对象被析构,而该对象的指针指向的内存也被释放,那么其他共享同一内存的对象可能会访问已释放的内存,导致未定义行为甚至程序崩溃。这种情况称为“双重释放”(double free)。在C++中,如果没有为类定义自定义的拷贝构造函数,编译器提供的默认拷贝构造函数就是浅拷贝。原创 2024-09-19 10:26:11 · 444 阅读 · 0 评论 -
C++面试题
TOCTOC。原创 2024-09-18 19:48:25 · 909 阅读 · 0 评论 -
C/C++基本语言相关面试题
浅拷贝:浅拷贝在复制对象时,只复制对象中的基本数据类型成员和指针值,而不复制指针指向的内存内容。这意味着复制后的对象中的指针将与原对象共享同一块内存。如果某个对象被析构,而该对象的指针指向的内存也被释放,那么其他共享同一内存的对象可能会访问已释放的内存,导致未定义行为甚至程序崩溃。这种情况称为“双重释放”(double free)。在C++中,如果没有为类定义自定义的拷贝构造函数,编译器提供的默认拷贝构造函数就是浅拷贝。原创 2024-09-10 10:37:22 · 1161 阅读 · 0 评论 -
Boost库一些概念
io_context 的线程数: net::io_context ioc{4};指定了 io_context 对象的并发处理能力为 4 个线程。在 Boost.Asio 中,可以通过创建多个线程并在线程中调用 io_context::run() 方法来实现线程池。手动创建线程池: 需要手动创建多个线程,并在每个线程中调用 ioc.run() 方法。它只是创建了一个 io_context 对象,并指定了线程池中的线程数为 4。线程池: 这并不意味着自动创建了一个线程池。要实现线程池,需要手动创建多个线程,原创 2024-09-07 10:24:11 · 1044 阅读 · 0 评论 -
线程池是怎么弥补上下文切换的开销的
线程池如何弥补上下文切换的开销线程池是一种用于管理和复用线程的技术,通过减少线程的创建和销毁开销,以及减少上下文切换的开销,来提高系统的性能和效率。原创 2024-09-07 10:23:44 · 480 阅读 · 0 评论 -
C++ enable_shared_from_this
std::enable_shared_from_this<> 是 C++11 引入的一个模板类,用于在一个类中安全地创建 std::shared_ptr 实例。std::enable_shared_from_this<> 的主要设计目的是解决在类的成员函数中安全地创建 std::shared_ptr 实例的问题。原创 2024-09-06 12:02:45 · 693 阅读 · 0 评论 -
奇异递归模板模式
静态多态性: CRTP通过模板实现了一种静态多态性, 即在编译期确定调用的具体函数,而不是在运行时通过虚函数表来确定。避免菱形继承问题: CRTP通过模板参数的方式避免了传统多继承中可能出现的菱形继承问题。每个派生类都明确地继承自一个特定的模板实例,不会出现多个继承路径的问题。类型安全: CRTP在编译期进行类型检查,确保只有符合特定条件的类才能继承模板基类。这种方式提供了更好的类型安全性,避免了运行时错误。CRTP的核心思想是让一个类通过模板参数继承自一个模板类,并且这个模板参数就是该类本身。原创 2024-09-06 10:09:54 · 424 阅读 · 0 评论 -
C++: std::once_flag 和 std::call_once
类型:std::once_flag 是一个结构体,用于记录某个函数是否已经被调用过。用途:与 std::call_once 配合使用,确保某个函数在多线程环境中只被执行一次。函数:std::call_once 是一个函数模板,用于确保某个函数在多线程环境中只被执行一次。参数:std::once_flag& flag:一个 std::once_flag 对象,用于记录函数是否已经被调用过。Function&& f:要执行的函数或可调用对象。Args&&… args:传递给函数的参数。原创 2024-09-05 12:27:10 · 494 阅读 · 0 评论 -
C++ 原子变量atomic variable
原子变量:用于在多线程环境中进行无锁的、线程安全的操作。原子性:确保操作是不可分割的,避免数据竞争和不一致。内存顺序:控制内存访问的顺序和可见性,提供多种选项以满足不同需求。应用场景:适用于需要线程安全的计数器、标志位等场景。原创 2024-09-05 12:26:17 · 1079 阅读 · 0 评论 -
C++ STL Algorithm 算法
TOCTOC。原创 2024-08-16 08:33:52 · 590 阅读 · 0 评论 -
C++ STL Iterator 迭代器
TOCTOC。原创 2024-08-16 08:33:23 · 675 阅读 · 0 评论 -
C++ STL 关联型容器
map 的特性是,所有元素会根据元素的键值自动被排序,map 的所有元素都是 pair,同时拥有实值(Value)和键值(Key)。pair 的第一元素被视为键值,第二个元素被视为实值。map 不允许两个元素拥有相同的键值。原创 2024-08-15 09:27:52 · 430 阅读 · 0 评论 -
C++ STL deque 双端队列
双端操作:可以在队列的两端高效地进行插入和删除操作。动态数组:内部实现为一个动态数组,支持随机访问。分段连续存储:与 vector 不同,deque 的分段连续存储结构使得在两端插入和删除元素时效率更高。= d.end();++it) {// 输出: 2 1 3// [1, 3]// [1]// 输出: Size: 1return 0;ch<='z';原创 2024-08-15 09:27:12 · 272 阅读 · 0 评论 -
C++ 11 STL list
TOCTOC。原创 2024-08-14 18:10:00 · 452 阅读 · 0 评论 -
C++11 STL中的Vector使用细节
TOCTOC。原创 2024-08-14 08:32:29 · 446 阅读 · 0 评论 -
C++ STL
TOCTOC。原创 2024-08-13 15:50:07 · 390 阅读 · 0 评论 -
C++ 线程 一些同步方式
TOCTOC。原创 2024-08-13 10:51:22 · 731 阅读 · 0 评论 -
C++ 线程
TOCTOC。原创 2024-08-13 10:48:54 · 1109 阅读 · 0 评论 -
C++ 11 智能指针 自动内存管理
TOCTOC。原创 2024-08-13 08:27:59 · 728 阅读 · 0 评论 -
C++ 11 默认的六个构造
【代码】C++ 11 默认的六个构造。原创 2024-08-13 08:27:40 · 126 阅读 · 0 评论 -
Qt 信号与槽机制
1、信号(signal):所谓信号槽(观察者模式),信号本质是事件。信号展现方式就是函数。当某一个事件发生之后,则发出一个信号(signal)。2、槽(slot):就是对信号响应的函数,槽就是一个函数。槽函数与普通函数区别:槽函数可以与一个信号关联,当信号被发射的时候,关联的槽函数被自动执行处理。信号与槽关联是使用 QObject::connect()函数进行实现。信号函数只需要声明(不需要定义(实现)),而槽函数需要定义(实现)。信号和槽机制底层是通过函数之间进行相互调用实现的。原创 2024-08-12 08:49:58 · 474 阅读 · 0 评论 -
C++11 bind
bind 用来将可调用对象和参数一起进行绑定。可调用对象包括普通函数、全局函数、静态函数、类静态函数甚至是类成员函数,参数包括普通参数和类成员。绑定后的结果,可以使用 std::function 进行保存,并延迟调用到我们需要的时候。原创 2024-08-12 08:47:58 · 527 阅读 · 0 评论 -
C++ 11 类模版 std::function
类模版 std::function 是可调用对象的包装器,可以包装除了类成员函数之外的所有可调用对象。包括,普通函数,函数指针, lambda,仿函数。通过指定的模板参数,它可以用统一的方式保存,并延迟执行它们。所谓的延迟执行,就是回调了。原创 2024-08-11 12:18:44 · 259 阅读 · 0 评论 -
C++ 11 enum和 assert
TOCTOC。原创 2024-08-11 12:16:46 · 538 阅读 · 0 评论 -
C++ functor 仿函数和Lambda
TOCTOC。原创 2024-08-10 23:58:16 · 1102 阅读 · 0 评论 -
C++ 11 auto(自动类型推导) 和 decltype(获取表达式类型)
/todo 推导类型(decltype) 重定义 typedef// 推导类型为map<int, string>::value_type()return 0;原创 2024-08-10 11:20:05 · 748 阅读 · 0 评论 -
C++ 11 for 循环和容器
C++为 for 提供 for range 的用法。对于 STL(vector/list/map)的遍历带来了极大的书写便利。(range for)语句遍历给定序列中的每个元素并对序列中的每个值执行某种操作,其语法形式是:for STLvector 初始化std::vector 是 C++ 标准库中的一个动态数组容器,定义在 头文件中。它提供了高效的随机访问和在末尾插入/删除元素的能力,但在中间或开头插入/删除元素的效率较低。std::vector 是动态大小的,可以根据需要自动调原创 2024-08-09 08:47:05 · 552 阅读 · 0 评论 -
C++ 11中一些新的关键字用法
nullptr 是用于解决 NULL 和 0 的有疑义关系的。NULL 通常被义为(void*)0。在如下应用中会引发歧义。原创 2024-08-09 08:46:40 · 435 阅读 · 0 评论 -
200道C/C++面试题
200道C/C++面试题原创 2024-08-05 21:31:54 · 3063 阅读 · 0 评论 -
C++ IOStream
TOCTOC。原创 2024-08-08 21:47:43 · 1010 阅读 · 0 评论 -
C++ 异常处理
try{被检查可能抛出异常的语句catch(异常信息类型 [变量名]){进行异常处理的语句使用条例1,被检语句必须放在 try 块中,否则不起作用。2,try catch 中花括号不可省。3,一个 try-catch 结构中,只能有一个 try 块,catch 块却可以有多个。以便与不同的类型信息匹配。try{}4,throw 抛出的类型,既可以是系统预定义的标准类型也可以是自定义类型。从抛出到 catch 是一次复制拷贝的过程。如果有自定义类型,要考虑自定义类型的拷贝问题。原创 2024-08-08 08:43:47 · 383 阅读 · 0 评论 -
C++ 模板
TOCTOC。原创 2024-08-08 08:43:21 · 449 阅读 · 0 评论 -
C++ 多态代码实例
TOCTOC。原创 2024-08-07 08:37:01 · 421 阅读 · 0 评论 -
C++ 多态原理
TOCTOC。原创 2024-08-07 08:36:06 · 717 阅读 · 0 评论 -
C++ RTTI 运行时类型信息
TOCTOC。原创 2024-08-06 17:28:19 · 312 阅读 · 0 评论 -
C++ 依赖倒置
TOCTOC。原创 2024-08-06 17:27:28 · 183 阅读 · 0 评论 -
C++ 多态
TOCTOC。原创 2024-08-06 08:39:37 · 531 阅读 · 0 评论 -
C++ 多重继承
TOCTOC。原创 2024-08-06 08:39:10 · 262 阅读 · 0 评论