- 博客(21)
- 资源 (2)
- 收藏
- 关注
原创 大端序和小端序的转换
PC中对整型数据的表示有两种方式:大端序和小端序,大端序的高位字节在低地址,小端序的高位字节在高地址。例如:对数字 -10,其4字节表示的大端序内容为。
2025-05-14 11:31:26
120
原创 C++并发编程
是 C++11 引入的并发编程工具,用于获取异步操作的结果。它提供了一种机制来访问异步操作的结果,无论该结果是否已经就绪。(C++17模板参数推导)使用scope_lock可以同时锁多个mutex(C++17)当需要多个线程等待同一个结果时,可以使用。通常配合lock_guard一起使用。
2025-05-12 18:35:08
571
原创 折叠表达式
折叠表达式(Fold Expressions)是 C++17 引入的一个特性,它允许你在模板参数包上直接应用二元操作符,从而将参数包折叠成一个单一的值。折叠表达式主要有两种形式:一元折叠和二元折叠。下面将通过示例详细说明。
2025-05-09 12:24:07
133
原创 函数对象、lambda表达式、function模板
int x;int y;// 定义一个泛型 lambda 表达式,用于打印任意类型的成员// 打印 Point 对象的成员// 输出: 10// 输出: 20return 0;泛型 lambda 表达式通过使用auto关键字,使得 lambda 表达式可以接受和操作多种类型的参数。这种特性在需要处理多种类型数据时非常有用,可以增加代码的灵活性和可重用性。通过泛型 lambda 表达式,可以简化代码并减少重复的类型定义。
2025-05-08 19:41:05
878
原创 c++模板基础知识
模板参数类型参数(typename/class)非类型参数(常量值)模板模板参数(嵌套模板)实例化隐式实例化(编译器自动推导)显式实例化(使用<>指定类型)特化与偏特化全特化(完全指定所有参数)偏特化(部分指定参数)优点代码复用类型安全编译期多态零运行时开销模板是C++实现泛型编程的核心机制,合理使用可以显著提升代码的可维护性和扩展性。实际开发中常用于容器、算法库等需要处理多种数据类型的场景。
2025-05-05 20:30:17
264
原创 c++语言易用性的改进
用户定义类型和内置类型可以使用起来一样方便简单、直观有时候可以更加方便处理边角情况,如"hi\0world"s和string("hi\0world")结果不同用户定义字面量可以用于静态初始化。
2025-05-02 15:51:55
861
原创 对象返回和异常情况
返回值优化包括:返回无名对象、返回有名对象(至少需要一个拷贝构造函数或者移动构造函数)、返回多分支构造的函数。返回对象的理由:返回值是可以自我描述的,而&参数既可能是输入输出,也可能仅输出,且容易被误用。返回对象:在函数输出数值时,尽量使用返回值而非输出参数(指的是函数参数用引用形式)异常违反了C++的零开销原则,但是大大增强了代码的表达能力和可读性。乘法和加法可以组合成一行,无需中间变量。性能高,没有不需要的复制操作发生。
2025-05-02 13:11:21
279
原创 智能指针的使用注意事项
提供了更简洁和安全的语法,同时避免了潜在的内存泄漏问题(例如在异常发生时)。是 C++14 引入的一个便捷函数,用于创建。的简单例子(c++20之后可以不使用new)C++20前自定义类型需要使用new。运算符来分配对象并构造。
2025-04-17 16:29:29
440
原创 移动语义与右值引用
因为用户定义析构函数、拷贝构造函数或者拷贝赋值运算符的存在会阻止移动构造函数和移动赋值运算符的隐式定义,所以任何想要移动语义的类应该声明全部五个特殊成员函数。是基于引用折叠规则实现的,用于完美转发(Perfect Forwarding)。它保留了实参的值类别(左值或右值),以便在转发时保持语义一致。这些规则决定了在模板实例化或类型推导时,嵌套引用的最终类型。左值引用与左值引用折叠为左值引用。左值引用与右值引用折叠为左值引用。右值引用与左值引用折叠为左值引用。右值引用与右值引用折叠为右值引用。
2025-04-16 19:58:03
294
原创 C++代码编程规范
小驼峰:首个单词第一个字母小写,其余字母首字母大写:camelCase。大驼峰:每个单词第一个字母大写,其余小写:CamelCase。C++的头文件和源文件名应该和类名保持一致。推荐使用驼峰命名,使用英文,不要用拼音。
2025-04-09 20:57:41
177
原创 GIT学习篇
推送到远端仓库——git push(git push origin branch_name,这个branch_name决定了你的本地分支推送成功之后,在远端服务器上的分支名,其他人可以获取该分支上的改动内容;windows下分支名大小写不区分)删除分支——git branch -d branch_name(git branch -D表示强制删除分支,删除后需要推送远端git push origin:branch_name)删除远端服务器分支(git branch -d -r branch_name)
2025-04-03 13:01:01
263
原创 解决VS2022克隆gitee项目权限问题(Authentication failed)
此报错信息具体为认证错误,解决办法就是:去电脑控制面板中更改,控制面板-》用户账户-》管理Windows凭据-》点击Windows凭据,在普通凭据上查看有没有git:https//gitee.com的凭据,并且确认这个跟自己gitee账号密码是不是一致的,不一致就修改。不少朋友在VS自带的git克隆项目进行时会出现权限错误报错,如下所示,报错信息为“Git failed with a fatal error. Authentication failed for .......”。
2025-02-19 19:55:32
305
原创 C++ 智能指针相关问题
1 资源释放了,指针没有置空2 内存空间一直没有释放,不断的申请内存空间,会导致内存泄露问题3 重复释放相同内存空间,会产生coredump问题4 指针未初始化问题(指向没有分配的空间、指向已经分配的空间、指向内核空间,也就是野指针问题)野指针:由于指针未被正确的初始化或者赋值导致的悬挂指针是由于指针指向的内存释放或者重新分配导致的。
2024-11-12 17:27:29
532
原创 CMake常用命令记录(CMakeLists.txt)
project(HelloWorld)#定义工程名称,并且可以指定工程版本,工程描述,web主页地址,支持语言#定义工程名称,并且可以指定工程版本,工程描述,web主页地址,支持语言#支持语言包括 CXX C JAVA#生成可执行文件add_executable(可执行程序名 源文件名称)#这里的可执行程序名和project中的项目名没有任何关系#源文件名称中,可以包含一个或者多个文件,可以用空格或者;来间隔#样式1#样式2div.c;main.c;mult.c;sub.c)
2024-11-06 21:27:27
676
原创 C++使用SMTP协议实现简易的邮件发送功能(QT)
开启过程:登录163邮箱→点击设置→将上图的IMAP/SMTP服务和POP3/SMTP服务都开启,在开启IMAP/SMTP服务过程中有登录授权码,需要复制下来,后期SMTP登录需要使用到。
2024-10-31 15:32:13
1854
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人