随笔分类 - C++ / C++11
摘要:static的使用方法 这两种写法是等价的,且最常见的写法是第一种: // 方式一:static 在返回类型前 (最常见) static void myFunction() { // ... } // 方式二:static 在返回类型后 (合法,但不常见) void static myFunctio
阅读全文
摘要:1.问题代码 class OneChannelData{ ... bool combine(const OneChannelData &oneChannelData) { try { /* 合并两个 std::array */ /* 不会检查越界 */ std::copy(oneChannelDat
阅读全文
摘要:在线程中抛出的异常默认不会自动传递到主线程(或父线程)。如果子线程中未捕获异常,程序会直接终止(调用 std::terminate())。若需在线程间传递异常,需手动捕获并处理。以下是具体分析和解决方案: 1. 默认行为:异常不跨线程传递 问题示例 #include <thread> #includ
阅读全文
摘要:std::vector<YourClass> 即使YourClass是可平凡复制类型也回应发异常 引发异常的代码如下: SamplePointData &operator=(const SamplePointData &samplePointData) { if (this != &samplePo
阅读全文
摘要:关键区别 方法 容量变化 大小变化 元素初始化 数据可访问性 resize(n) 可能增加 设置为n 新元素被值初始化 可立即访问[0,n) reserve(n) 增加到至少n 不变 不初始化新元素 仅可访问原大小范围内的元素 详细解释 resize(n): 将 vector 的 size (实际元
阅读全文
摘要:C++ 静态成员变量导致的 malloc(): corrupted top size 错误分析 问题现象 程序崩溃并报错: malloc(): corrupted top size Signal: SIGABRT (Aborted) 调用栈关键信息 __pthread_kill_implementa
阅读全文
摘要:问题描述: In file included from /usr/include/c++/11/memory:66, from /tmp/tmp.Ok1lo5h73E/Thread/BusThreadPool/BusThreadPool.h:9, from /tmp/tmp.Ok1lo5h73E/T
阅读全文
摘要:问题代码: BusThreadPool::BusThreadPool(const std::map<std::string, Bus> &relationBus, const std::shared_ptr<PipeManager> &pipeManager) : relationBusDevice
阅读全文
摘要:C++ 并不原生支持反射机制 因此可以通过宏进行Debug操作 #define PRINT_VARIABLE(var) std::cout << #var " = " << var << std::endl;
阅读全文
摘要:1. 拷贝构造函数 定义:FourByteStruct(const FourByteStruct &fourByteStruct) 调用时机: 当初始化一个对象时使用另一个相同类型的对象。例如:FourByteStruct obj1; // 默认构造 FourByteStruct obj2 = ob
阅读全文
摘要:1.就地构造通常与 union 关键字一并使用,因为union会进行延迟构造并且预先开辟空的内存空间,因此这样的组合任务是较佳实现。 例子: class FixedValueMessage { /* 定值数据 */ public: explicit FixedValueMessage(const E
阅读全文
摘要:1.std::move 的作用: std::move 本身只是一个类型转换操作。它将一个左值表达式转换为一个右值引用表达式。 重要的是要理解 std::move 不执行任何实际的移动操作。 它只是使对象能够被移动。 2.移动语义依赖于移动构造函数/移动赋值运算符: 移动语义的真正实现依赖于类是否定义
阅读全文
摘要:// 基本情况:没有更多的 bitset 需要拼接 template<typename... Args> std::bitset<8 * sizeof...(Args)> concatenate_bitsets() { return std::bitset<8 * sizeof...(Args)>(
阅读全文
摘要:关于bitset的一些用法 强调std::vector<bool> 会被特化为bitset。 四个字节表示一个bool值回被 用一个bit位取代,因此会导致迭代器失效,所以进行状态压缩时应当考虑使用bitset容器。 bitset可以通过u_char进行初始化 1 u_char tmp = 'a';
阅读全文
摘要:实现场景: 前端维护一个进度条,后端进行异步调用,查询状态。为防止用户界面被阻塞故采用异步操作调用。 std::future 可以理解为一个轻型Thread std::future 相对于QtConcurrent ,std::future不要求传入函数必须为static声明,这大大提高了灵活性。 参
阅读全文
摘要:void StringToBCD(const char* strSource, uint8_t byBCDTarget[8]) { // 初始化BCD数组 memset(byBCDTarget, 0, 8); // 计算输入字符串的长度 size_t length = strlen(strSourc
阅读全文
摘要:C++语法下实测: ^(?!(?:CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9]|con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\.[^.]*)?$)[^<>:\"/\\\\|?*\\x00-\\x1F]*[^<>:\"/\\\\|?*\\x00-\
阅读全文

浙公网安备 33010602011771号