一只野生的善逸
坐标杭州,单身...呃,一起约轮滑,漂移板,柯南,宫崎骏,新海诚的动漫电影呀!
展开
-
C++笔记之通过CMakeLists.txt像使用boost库一样使用qt库中特有的模块来方便开发
【代码】C++笔记之通过CMakeLists.txt像使用boost库一样使用qt库中特有的模块来方便开发。原创 2024-06-20 23:59:17 · 47 阅读 · 0 评论 -
C++笔记之RegisterCallback和setCallback、以及setCallback(lambda表达式)
用于注册多个回调函数,通常在事件系统或多观察者模式中使用。:用于设置或替换一个回调函数,通常用于单一事件处理场景。原创 2024-06-19 00:15:55 · 48 阅读 · 0 评论 -
C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法
要使用std::pair,需要包含头文件。T2 second;std::pair是一个简单但非常有用的工具,适用于需要将两个相关值绑定在一起的场景。通过理解它的构造函数、成员函数和比较操作符,可以在 C++ 编程中更有效地使用它。要使用std::tuple,需要包含头文件。std::tuple是一个可变参数模板类,可以包含任意数量的元素。std::tuple是一个非常强大的工具,可以在 C++ 中存储和操作多个不同类型的值。原创 2024-06-08 15:48:27 · 292 阅读 · 0 评论 -
C++笔记之Unix时间戳、UTC、TSN、系统时间戳、时区转换、local时间、转换为字符串的方法
UTC(协调世界时)是目前国际上最广泛采用的世界时间标准。它基于国际原子时(TAI)与太阳时间(UT1)之间的差异进行调整,确保与地球自转速度保持一致。原创 2024-05-26 21:23:02 · 123 阅读 · 0 评论 -
C++笔记之在类内部和类外部启动线程传入成员函数时的不同写法
—— 2024-05-12 杭州 参考笔记:C++笔记之lambda捕获列表中的‘this‘指针假设有一个类,它有一个成员函数:1. 在类外部使用直接使用成员函数指针使用 lambda 表达式2. 在类内部使用使用成员函数指针使用 lambda 表达式比较表格这张表格展示了在类内部和类外部启动线程以及使用不同技术(成员函数指针、lambda 表达式)的对比:总结来说,选择哪种方法取决于代码的具体需求和个人的编程风格。Lambda表达式因其灵活性和简洁性通常是推荐的方式,尤其是在涉及复杂捕获逻原创 2024-05-12 19:21:29 · 73 阅读 · 0 评论 -
C++笔记之memcpy探究
结构体。原创 2024-04-28 21:40:37 · 79 阅读 · 0 评论 -
C++笔记之C++、C语言、PISIX、拿到线程函数的返回值的所有方法
— 2023-12-10 杭州。原创 2024-04-21 15:34:02 · 369 阅读 · 0 评论 -
C++笔记之std::bind(&MyClass::MemberFunction, &myObject)详解
是标准库中的一个函数模板,它的主要用途是将函数调用包装起来,可以绑定函数调用中的一些参数,让我们可以延迟函数调用或者将其作为参数传递给其他函数。来绑定一个成员函数时,需要传递成员函数的地址和一个对象的实例(或者指向对象的指针)作为参数。是 C++11 中引入的一个函数适配器,它的主要作用是将一个函数或可调用对象以及其参数绑定成为一个新的可调用对象。是带参数的成员函数,那么在绑定时,可以在对象实例之后添加成员函数的参数。占位符可以在调用时指定参数的位置,从而实现参数顺序的重新排列或者部分参数的固定。原创 2024-04-10 23:44:24 · 150 阅读 · 0 评论 -
C++笔记之注册回调函数常见的5种情况对比
当事件循环运行时,它会处理队列中的事件,调用注册的回调函数。在面向对象的设计中,这种方法不够灵活或安全,因为它不支持成员函数的直接回调,且无法保证回调函数与对象的状态相关联。在面向对象设计中,回调函数通常与对象的状态紧密相关,因此会注册对象的成员函数作为回调,以便在回调时能够访问对象的状态。在C++中,事件循环通常是由一个循环实现的,等待事件发生,并根据事件的类型调用相应的回调函数。:因为槽是对象的成员函数,它自然可以访问和修改对象的状态,这符合“情况 5”的描述,即回调函数需要访问对象状态时。原创 2024-04-10 23:39:39 · 482 阅读 · 0 评论 -
C++笔记之pkg-config详解,以及g++、gcc编译时使用pkg-config
的优势是它自动处理这些细节,包括库依赖关系、版本号和路径问题。如果手动指定这些参数,需要确保它们是正确的,并且当库更新或路径变化时,可能需要手动更新编译命令。是一个非常有用的工具,它简化了编译和链接过程中的库依赖管理。是一个在编译时用来帮助获取库的相关信息的工具。它主要用于获取编译和链接时所需的标志,例如。头文件和库文件的安装位置。当在编译程序时,如果程序依赖于某个库(如 GTK+, libxml2 等),所需的标志,需要手动指定这些标志。来简化 C++ 程序的编译过程,包括自动获取编译器和链接器标志。原创 2024-04-05 14:51:32 · 289 阅读 · 0 评论 -
C++笔记之memmove函数(可重叠)
— 杭州 2024-03-25 夜。原创 2024-03-25 22:49:32 · 144 阅读 · 0 评论 -
C++笔记之argv[1]与字符串内容的比较
在 C++ 中,argv[1] 是一个 char*类型,它指向第一个命令行参数的第一个字符。比较两个 char* 类型的值实际上是比较两个指针,而不是它们指向的字符串内容。因此,if(argv[1] == “Hello”)。实际上比较的是两个内存地址,而不是字符串值。返回 0,那么两个字符串是相同的。对象的内容,如果内容相同,那么结果是。原创 2024-03-24 23:34:31 · 109 阅读 · 0 评论 -
C++笔记之设计模式全局状态管理类:使整个工程项目中的所有函数可以访问同一个变量,并且能够感知到这个变量的变化(变量共享)
—— 杭州 2024-03-21 夜实现方法:code review!类GlobalState包含一个可以被整个项目访问的变量value1.2.main.cpp可以在任何需要的地方包含这个头文件,并使用GlobalState::getInstance()来获取全局状态的实例,并通过它访问和修改value:虽然单例模式解决了全局变量的一些问题,但它仍然可能导致代码测试和维护的困难,因为它引入了全局状态。此外,如果在多线程环境中使用单例,还需要考虑线程安全性。在这种情况下,可能需要使用线程局部存储(thr原创 2024-03-21 18:55:48 · 232 阅读 · 0 评论 -
C++笔记之在成员函数中打印出对象名
的定义被放在了"MyClass.h"中,而它的实现被放在了"MyClass.cpp"中。在实现文件中包含相应的头文件是非常重要的,因为它提供了类声明的信息。文件中,我们包含"MyClass.h"来使用。编译时,通常需要将所有的源文件(文件,并将它们链接为一个名为。原创 2024-03-10 07:20:28 · 55 阅读 · 0 评论 -
Protobuf学习笔记以及序列化的一些概念要点(暂放C++笔记专栏)
明确字节序的差异,必要时进行字节序的转换。使用与字节序无关的序列化框架和数据交换格式。仔细设计和测试序列化和反序列化逻辑,确保数据结构中元素的顺序得到正确处理。正确处理这些问题可以确保数据在不同系统、平台和编程语言之间能够准确无误地传输和恢复。原创 2024-03-03 11:46:39 · 87 阅读 · 0 评论 -
C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径
如果你提供了可执行文件的完整路径,就像上面的例子一样,它的行为类似于。下面是一个简单的示例,展示了如何在不使用Qt的情况下,使用C++在Linux下启动一个新进程并设置。的第一个参数(程序的路径),另一次作为第二个参数(argv[0],即程序名)。函数替换了当前进程的映像为一个新程序的映像,这个新程序就是我们想要执行的程序。调用成功,当前进程的执行代码将被新程序替换,因此如果看到后面的错误消息输出,说明。函数时,第一个参数是可执行文件的名称,第二个参数是参数数组。如果你的外部程序需要带参数,你可以在调用。原创 2024-02-26 22:19:20 · 161 阅读 · 0 评论 -
C++笔记之ntohl()函数详解
ntohl()是一个网络字节顺序转换函数,它用于将一个无符号长整型数从网络字节顺序转换为主机字节顺序。ntohl是 “Network TO Host Long” 的缩写。计算机网络中使用的字节顺序通常是大端(Big-Endian),而不同的主机可能采用大端或小端(Little-Endian)字节顺序。当在不同字节顺序的主机之间通过网络通信时,确保数据在发送和接收时具有正确的字节顺序是非常重要的。原创 2024-02-24 17:49:55 · 435 阅读 · 0 评论 -
C++笔记之RTTI、RAII、MVC、MVVM、SOLID在C++中的表现
自定义实现RTTI可以提供更灵活和高效的解决方案。以下是一个简单的自定义实现RTTI的示例。主要是通过getName虚方法在运行时断言类型。public:public:class Basepublic:public:int main()if(typeInfo.getName() == "Derived") //进行类型识别//安全转换return 0;原创 2024-01-28 16:42:46 · 451 阅读 · 0 评论 -
C++笔记之作用域解析符::和命名空间、作用域的关系
命名空间是C++中的一个容器,它用于封装一组具有唯一名称的实体(如变量、函数、类等)。它的主要目的是解决不同库之间的命名冲突问题,允许开发者组织代码片段以防止命名冲突。原创 2024-01-26 19:06:23 · 254 阅读 · 0 评论 -
C++笔记之bool类型的隐式转换现象与应用
public:// 基于某些条件返回true或falseMyBool obj;if (obj) {// obj会隐式转换为bool类型,如果转换结果为true,执行这里的代码请注意,为了避免隐式类型转换可能导致的潜在错误,现代C++编程建议使用explicit关键字来避免构造函数和转换函数的隐式转换。对于上面的自定义类型例子,如果不希望MyBool类型的对象在布尔上下文中被隐式地使用,应将转换运算符声明为explicit。原创 2024-01-21 21:03:16 · 145 阅读 · 0 评论 -
《Effective C++》条款02、条款03、条款20、条款21阅读笔记:关于static、const、constexpr的思考
—— 杭州 2024-01-15 原文:旧式编译器也许不支持上述语法,它们不允许static成员在其声明式上获得初值。此外所谓的"in-class初值设定"也只允许对整数常量进行。如果你的编译器不支持上述语法,你可以将初值放在定义式。唯一例外是当你在class编译期间需要一个class常量值,例如在上述的GamePlayer::scores的数组声明式中(是的,编译器坚持必须在编译期间知道数组的大小)。这时候万一你的编译器(错误地)不允许"static整数型class常量"完成"in class初值设定"原创 2024-01-15 00:41:24 · 122 阅读 · 0 评论 -
C++笔记之vector和thread结合使用
code review!原创 2023-06-22 17:38:45 · 1070 阅读 · 1 评论 -
C++之指针探究(六):二级指针和指针数组
前文:C++之指针探究(五):数组指针和二维数组使用指向指针的指针来指向数组指针,至少有以下两个优势: ♠\spadesuit♠ 避免重复分配内存(下例中虽然我们进行了多个分类,但每本书名只占据一个存储位置,没有浪费)。 ♠\spadesuit♠ 只需要进行一处修改(如果其中一个书名需要修改,只需要修改一个地方即可)。这样,代码的灵活性和安全性都有了显著提高。例:图书分类问题运行结果:附上例代码://小问学编程#include<stdio.h>int main()原创 2020-12-27 15:51:19 · 243 阅读 · 0 评论 -
vscode运行C/C++单个文件的最简单方法
step1:写好程序#include<iostream>using namespace std;int main(){ cout<<"I love you!"<<endl; int a=1; int b=2; int c; c=a+b; cout<<"c="<<c<<endl; return 0;}step2:Ctrl+shift+b,选编译器g++step原创 2022-04-11 17:30:31 · 1729 阅读 · 1 评论 -
C++之指针探究(九):结构体指针
结构体指针的定义 (1) C语言中的结构体是一种非基本数据类型,可以将多种数据组合为新的数据类型; (2) 定义完成结构体类型后,我们就可以用这种新类型,去声明新变量,声明方式和基本数据类型一样:<类型名称><变量名> (3) 声明结构体变量后,可以通过“.”符号引用其中的成员; (4) 结构体指针的定义与基本数据结构的指针类似,使用“∗\ast∗”符号即可; (5) 结构体指针也支持取内容,加减常数等操作,同基本数据结构的指针类似; (6) 结构体指针通过.原创 2020-12-29 15:05:19 · 805 阅读 · 0 评论 -
C++之继承探究(七):虚析构函数
前文:C++之继承探究(六):虚函数和多态虚析构函数 虚析构函数是为了解决基类的指针指向派生类对象,并用基类的指针删除派生类对象时防止子类的数据不会被释放造成内存泄露。 如果父类的析构不是虚析构,则当(用delete)删除一个指向子类对象的父类指针时,将调用父类版本的析构函数,子类只释放了来自于父类的那部分成员变量,而子类自己扩展的成员没有被释放,造成内存泄漏。例1:附例1代码://小问学编程#include<iostream>using namespace std;c.原创 2020-12-16 14:39:11 · 603 阅读 · 0 评论 -
C++笔记之bitset使用
运行b1:0000;b2:1010;b3:0011;itset是c++中的一个类库,来管理一系列bit位,及二进制串。类似于数组,但每个元素只能是0或1且仅用1bit的空间。原创 2022-10-23 23:46:55 · 609 阅读 · 0 评论 -
C++新特性探究(9.1):functor仿函数探究
Functor 对象模拟函数 把类对象,像函数名一样使用。 仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator( ),这个类就有了类似函数的行为,就是一个仿函数类了。operator( )语法格式:例:pow->mypow附上例代码://小问学编程#include<iostream>#include<vector>using namespace std;class Pow{public: in原创 2021-02-22 21:02:41 · 186 阅读 · 0 评论 -
C++笔记之通过静态类成员变量的方式在不同的类之间传递参数
在C++中,可以使用静态类成员变量作为一种在不同类之间传递参数的方式。静态类成员变量是类的所有对象之间共享的变量,它们存在于类的内部,但不属于任何特定的类对象。通过静态类成员变量的方式,不同的类可以在没有对象实例之间直接共享数据,从而实现参数的传递。,它被用作参数传递的中间变量。类包含一个静态成员变量。原创 2023-12-10 16:12:32 · 564 阅读 · 0 评论 -
C++新特性探究(18.2):C++11 unique_ptr智能指针详解
作为智能指针的一种,unique_ptr 指针自然也具备“在适当时机自动释放堆内存空间”的能力。和shared_ptr指针最大的不同之处在于,unique_ptr指针指向的堆内存无法同其它unique_ptr共享,也就是说,每个unique_ptr 指针都独自拥有对其所指堆内存空间的所有权。 这也就意味着,每个 unique_ptr 指针指向的堆内存空间的引用计数,都只能为 1,一旦该 unique_ptr 指针放弃对所指堆内存空间的所有权,则该空间会被立即释放回收。1、unique_ptr智能原创 2021-06-08 20:25:58 · 190 阅读 · 0 评论 -
linux C++获取当前文件所在路径的方法
方法一:getcwd代码#include <iostream>#include <unistd.h>using namespace std;int main() { cout << "I love you!" << endl; char *path; path = getcwd(NULL, 0); cout << "path = " << path << endl; f原创 2022-04-11 18:04:43 · 4114 阅读 · 0 评论 -
C++笔记之Delegate和委托构造(Delegating constructor)
— 杭州 2023-12-10。原创 2023-12-10 18:20:56 · 1120 阅读 · 0 评论 -
C++笔记之虚析构函数的作用
如果基类的析构函数不是虚函数,那么只会调用基类的析构函数,而不会调用派生类的析构函数。虚析构函数是一种特殊类型的析构函数,在基类中声明为虚函数,并且在派生类中可以被重写。它用于正确释放派生类对象的资源,即使通过基类指针删除派生类对象时也能够调用正确的析构函数。它与类的构造函数相对应,当对象的生命周期结束时(例如对象被销毁或超出其作用域),析构函数会被自动调用。总结来说,当使用继承和多态性时,通常应该将基类的析构函数声明为虚函数,并在派生类中重写它,以确保正确释放派生类对象的资源。函数中,通过基类指针。原创 2023-07-13 19:33:18 · 779 阅读 · 0 评论 -
C++笔记之打印一维vector,打印二维vector函数封装
代码运行原创 2022-09-17 23:49:28 · 662 阅读 · 0 评论 -
C++笔记之花括号和圆括号初始化区别,列表初始化和初始化列表区别
code review!原创 2023-08-17 13:48:36 · 326 阅读 · 0 评论 -
C++笔记之cout高亮输出以及纯C++实现一个彩色时钟
【代码】C\++笔记之cout高亮输出以及纯C\++实现一个彩色时钟。原创 2024-01-07 14:55:00 · 617 阅读 · 0 评论 -
C++笔记之加载yaml数组并存到vector中
C++笔记之加载yaml数组并存到vector中原创 2022-06-01 05:55:07 · 1315 阅读 · 0 评论 -
C++STL笔记(五):Deque详解
Deque结构 有着和vector几乎一模一样的接口,不同的是Deque的dynamic array头尾都开放,因此能在头尾两端进行快速安插和删除。一.Deque的构造函数和析构函数二.Deque的非更易型操作三.Deque的更易型操作...原创 2021-03-28 22:34:31 · 152 阅读 · 0 评论 -
C++之继承探究(八):动态绑定
前文:C++之继承探究(七):虚析构函数动态绑定 虚函数被调用的时候,到底调用那个版本,在编译的时候无法确定,只有在执行时才能确定,称为动态绑定。之前的函数调用,是在编译时就可以确定调用哪个版本的函数。 绑定使得程序可以照顾到未来增加的代码,比如创建⼀个新的子类,并在子类中覆盖了父类的虚函数。用之前的父类指针,依然可以正确的调用到新子类里的函数,而无需对旧有代码进行更改。...原创 2020-12-16 18:27:17 · 179 阅读 · 0 评论 -
C++笔记之从数组指针到函数数组指针(使用using name和std::function)
【代码】C++笔记之从数组指针到函数数组指针。原创 2023-08-05 23:59:49 · 337 阅读 · 0 评论