自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 资源 (2)
  • 收藏
  • 关注

原创 error: member access into incomplete type ‘element_type 编译,类包含和类定义相互包含为成员变量,并且引用成员函数报不是完整类型报错,问题

error: member access into incomplete type 'element_type

2025-06-03 09:37:51 636

原创 c++ 内部类

c++ 内部类 ::在外部类内部定义的独立类,语法上属于外部类成员

2025-04-29 14:47:21 225

原创 驼峰命名法(Camel Case)与匈牙利命名法(Hungarian Notation)详解

驼峰命名法(Camel Case)是一种变量、函数、类等标识符的命名方式,单词之间‌。‌:Java、JavaScript、C#、Go 等广泛使用。‌:如 Java、C# 等已有严格类型系统,前缀显得多余。‌:现代 IDE 可自动提示类型,前缀可能造成代码臃肿。‌,每个单词的首字母大写(或首单词小写),形似驼峰。‌:单词间无分隔符,但首字母大写仍能清晰区分。‌,帮助开发者快速识别变量类型或作用。‌:通过前缀快速识别变量类型或作用。‌:常量通常用全大写+下划线(如。‌,在变量名前添加‌。

2025-04-27 16:57:07 958

原创 c++17 对于临时对象作为右值的优化

‌定义‌临时物化指纯右值(如字面量、函数返回的非引用对象)在需要实际存储时,隐式转换为将亡值(xvalue)的过程。‌触发场景‌‌绑定到右值引用‌:如,字面量42(纯右值)需物化为临时对象以绑定到r。‌访问成员或子对象‌:如需物化为临时对象才能调用c_str()。‌初始化非类类型对象‌:如f(10);,字面量10需物化为 xvalue 以匹配参数类型。‌临时物化‌是纯右值转换为可操作对象的桥梁,仅在需要时触发。‌右值转换规则‌通过将纯右值提升为 xvalue,使移动语义高效介入。

2025-04-27 16:34:18 847

原创 C/C++线程详解

C/C++线程详解

2025-04-25 14:04:30 1005

原创 C/C++时间函数详解及使用场景

C/C++时间函数详解及使用场景

2025-04-25 11:35:42 1131

原创 git 本地创建了版本 怎么推送到远端

git 本地创建了版本 怎么推送到远端

2025-04-07 11:15:58 1034

原创 策略模式(Strategy Pattern)与状态模式(State Pattern)的异同

两者均通过将行为委托给其他对象来实现功能解耦,遵循“组合优于继承”的原则。均支持扩展新的策略或状态,无需修改现有代码。两者在结构上相似,但设计目标和适用场景不同。:将状态相关的行为委托给具体的状态类。,状态变化由上下文或状态自身触发。:将算法逻辑委托给具体的策略类。,由客户端主动控制策略的选择。:持有策略或状态对象的引用。:定义行为方法的统一接口。

2025-03-14 13:41:59 367

原创 C++ Lambda 表达式详解

Lambda 表达式是 C++11 引入的匿名函数对象,用于简化代码逻辑的封装,尤其在需要临时函数或回调的场景中非常实用。:基础功能在 C++11 中引入,泛型 Lambda(C++14)、模板 Lambda(C++20)逐步增强。通过合理使用 Lambda,可以显著提升代码的可读性和简洁性,但需注意捕获安全和生命周期管理。:按引用捕获局部变量时,确保 Lambda 生命周期不超过变量。默认情况下,按值捕获的变量在 Lambda 内不可修改。:指定外部变量的捕获方式(按值、按引用等)。

2025-03-13 14:45:55 1032

原创 vector内存管理机制详解

std::vector 是 C++ 标准库中最常用的动态数组容器,其内存管理机制是其高效性能的核心

2025-03-12 15:23:44 758

原创 dbus aip详解

g_dbus_register_interface 函数的作用是将一个接口注册到 D-Bus 总线上,使得其他进程或应用可以通过 D-Bus 与它进行通信。你需要为接口提供方法、信号和属性,并且可以传递额外的用户数据和清理函数。{ NULL, 0, NULL, NULL } // 结束标志{ NULL, NULL, NULL } // 结束标志{ NULL, 0, 0, NULL, NULL } // 结束标志methods,signals,user_data,

2024-11-25 15:43:42 1000 1

原创 dbus知识详解

D-Bus 是一种进程间通信(IPC)和远程过程调用(RPC)机制,专门设计用于在同一台机器上运行的进程之间进行高效且易于使用的通信。它旨在用一个统一的协议取代该领域内多个竞争的 IPC 框架,这个协议特别针对满足安全的系统内进程间通信需求而量身定制。是一个轻量级、低延迟、低开销、高可用性的进程间通信系统(IPC),它已被大多数Linux发行版所采用。D-Bus由freedesktop.org项目提供,使用GPL许可证发行。

2024-11-25 15:41:07 2133

原创 ^M 字符处理

windows用的是\r\n来做分行的linux是\n

2024-11-01 15:54:07 1051

原创 Valgrind (使用说明,交叉编译)

Valgrind是一款功能强大的开源工具,主要用于内存调试、内存泄漏检测、性能分析以及线程错误的检测

2024-10-28 10:50:42 2438

原创 递归的实现

递归是函数(或过程)直接或间接地调用自身的方法。递归通常用于解决可以分解为更小、更简单的同类问题的问题。递归需要满足两个条件:

2024-04-10 09:17:01 601

原创 fprintf 和printf的区别 都有什么优缺点 什么场景适用

fprintf和printf在C语言中都是用于输出格式化数据的函数,但它们之间存在一些关键差异,包括输出目标、函数参数和应用场景。这些差异导致了它们各自的优势和适用场景。

2024-04-09 09:33:11 966

原创 vscode 配置文件settings.json和c_cpp_properties.json的作用

在 Visual Studio Code (VSCode) 中,settings.json 和 c_cpp_properties.json 都是配置文件,它们分别用于不同的目的。

2024-04-09 09:32:04 3121

原创 strlen和sizeof

strlen 和 sizeof 是 C 语言中两个用于确定字符串或数据类型大小的常用操作符,但它们的工作方式和目的有所不同。下面是对这两个操作符的详细解释:

2024-03-26 09:04:36 1129

原创 linux网络常用命令

ifconfig是 Linux 系统下用于配置和显示网络接口信息的命令。该命令是的缩写,能够用来查看、配置、启用或禁用网络接口。以下是对ifconfig。

2024-03-18 16:42:53 1267

原创 整型变量的原子操作

原子操作(Atomic Operation)是指不可中断的操作,即在多线程环境下,当一个线程在执行原子操作时,不会被其他线程的调度和中断所影响。这种操作在多线程编程中尤为重要,因为它能保证操作的原子性,从而避免数据竞争和不一致。

2024-03-14 17:06:35 1294

原创 线程(thread)

线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix/Linux系统中,使用POSIX线程库(也称为pthread库)来支持多线程编程。

2024-03-13 15:04:06 670

原创 explicit关键字详解

在C++中,explicit关键字用于声明只能通过显式调用来调用的单参数构造函数(即只接受一个参数的构造函数)。这样的构造函数默认可以用于隐式类型转换,但使用了explicit关键字后,禁止了隐式转换,只能通过显式调用来使用。

2024-03-11 22:30:45 479

原创 新式的字符串字面常量(String Literal)

在 C++ 中,关于字符串字面常量的新式语法或特性主要与原始字符串字面量(Raw String Literals)和用户定义的字符字面量(User-Defined Literals for Characters)有关

2024-03-11 20:30:39 566

原创 c++ 新的函数声明语法

在C++11及以后的标准中,引入了一些新的函数声明语法,其中最显著的变化是引入了函数声明中的右值引用(&&)、默认参数和noexcept关键字。

2024-03-11 20:23:57 909

原创 类的关系 继承(Inheritance)、聚合(Aggregation)和关联(Association)

在面向对象编程中,类之间的关系主要有以下几种:继承(Inheritance)、聚合(Aggregation)和关联(Association)。每种关系在对象的创建和销毁时,构造函数和析构函数的调用顺序都会有所不同。下面我将分别解释这些关系,并举例说明构造函数和析构函数的调用顺序

2024-03-07 18:11:47 1247

原创 浅拷贝 深拷贝

在C++中,浅拷贝和深拷贝是对象复制时非常重要的概念,尤其在处理动态分配的内存和复杂数据结构(如指针、数组和自定义对象)时。下面详细解释这两种拷贝方式,并提供相应的示例。

2024-03-07 17:52:53 259

原创 临时对象

临时对象是在程序中隐式创建并用于保存某种状态的对象,它在创建后立即被使用,并在使用完毕后立即被析构。这种对象通常没有显式的名字,是为了简化代码编写和提高效率而由系统自动创建的。

2024-03-07 17:45:00 492

原创 运算符重载(Operator Overloading)

在C++中,运算符重载(Operator Overloading)是一种允许程序员为自定义数据类型重新定义或重载已有的运算符的功能。通过运算符重载,我们可以使得自定义类型的对象能够像内置类型(如int、float等)一样使用运算符

2024-03-07 17:31:30 1029

原创 friend(c++ 关键字)

C++中,friend关键字用于声明友元函数或友元类,它们可以访问类的私有(private)和保护(protected)成员,即使它们不是类的成员。这提供了一种突破数据封装和隐藏的方式,使得某些函数或类能够访问另一个类的内部状态。

2024-03-07 17:11:39 625

原创 右值引用(rvalue reference)

C++11 引入了右值引用(rvalue reference)的概念,这是为了支持移动语义(move semantics)和完美转发(perfect forwarding)而引入的新特性。右值引用允许我们高效地处理临时对象,避免不必要的拷贝,从而提高程序的性能。

2024-03-06 17:55:27 1578

原创 带领域的枚举(Scoped Enumeration

带领域的枚举(Scoped Enumeration)在C++中确实是一个重要的特性,它允许你创建类型安全的枚举,其中每个枚举值都是其枚举类型的一部分,并且不会隐式地转换为整数或从整数转换回来。这样做可以防止一些常见的编程错误,比如错误地假设枚举值可以直接与整数互操作。

2024-03-04 22:20:59 1114

原创 命名空间(namespace)

在C++中,命名空间(Namespace)是一个特性,用于封装代码并避免名称冲突。命名空间可以看作是一个容器,其中可以包含类、函数、变量、常量、其他命名空间等。通过使用命名空间,我们可以更好地组织代码,提高代码的可读性和可维护性。

2024-03-04 22:04:49 615

原创 队列(queue)c++

C++ 中的队列(queue)是一种先进先出(FIFO)的数据结构。

2024-03-01 16:36:33 326

原创 对象模型(Object Model)

对象模型(Object Model)

2024-03-01 16:06:02 2098

原创 仿函数(Functor(c++))

仿函数(Functor)是一个可以像函数那样被调用的类对象。这意味着它实现了operator(),使得类的对象可以像函数那样被调用。

2024-03-01 15:37:07 1204

原创 智能指针(Smart Pointers)

智能指针(Smart Pointers)是C++中的一种高级特性,它提供了一种自动管理动态分配内存的机制。通过智能指针,开发者可以避免手动管理内存所带来的问题,如内存泄漏和悬挂指针等。智能指针的主要目的是确保当对象不再需要时,其内存能够被自动释放。

2024-03-01 15:28:09 1959

原创 list(stl)

C++ STL 中的 std::list 是一个双向链表容器,提供了一系列操作双向链表的 API。

2024-02-29 15:26:56 1161

原创 deque

deque,即双端队列(double-ended queue),是一种具有队列和栈的性质的数据结构。它允许你在队列的两端进行元素的插入和删除操作。在C++的STL(Standard Template Library)中,deque是一个模板类,可以存储任何类型的数据。

2024-02-29 15:15:11 1003

原创 vector

std::vector是 C++ 标准模板库 (STL) 中的一个动态数组类模板,它提供了一个可以动态调整大小的数组。std::vector是一种序列容器,它支持随机访问迭代器,因此可以高效地访问其内部的任何元素。

2024-02-29 14:42:02 1082

原创 stl 迭代器(Iterator)

迭代器(Iterator)

2024-02-29 14:24:49 525

testDir.rar

cmake 编译一个源文件存在多个目录,多级目录的工程。

2021-11-05

设计模式之模板方法测试代码

设计模式之模板方法测试代码

2021-11-13

空空如也

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

TA关注的人

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