![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++技术
哇塞~哇塞~
这个作者很懒,什么都没留下…
展开
-
【c++】浅拷贝与深拷贝
区别:浅拷贝只复制地址,深拷贝重新开辟内存;浅拷贝问题:若类中有申请堆指针,会在赋值和拷贝后造成析构的多次释放申请空间,造成内存问题;示例:class LightCopyA{public: LightCopyA(){p = new int[10];} ~LightCopyA(){ cout<<"release ..."<<p<<endl; delete p;}//#define LIGHT_COPY#ifdef原创 2022-03-03 15:44:09 · 454 阅读 · 0 评论 -
【Qt篇】QString重载成员函数分析(支持格式化、自动补全、左右对齐功能)
QString的arg灵活使用,可以解决不同进制、不同字符拼接、截取、字符左右对齐补全等问题,下面就此给出包含所有情况的代码分析:void FloatTool::on_pushButton_released(){ QString tmp; if(m_setEndian) tmp = QString("0x%1%2%3%4").arg(m_setValue.dec[3], 2, 16, QLatin1Char('0')) \ .arg(m_s原创 2022-01-25 09:42:11 · 1460 阅读 · 0 评论 -
【C++篇】易错问题总结
1.inline使用C++对满足如下条件的成员函数,默认编译为内联函数:1.类体类定义的成员函数;2.成员函数中无循环;如何显示使用inline:1.类体内声明并定义inline;2.类体内声明inline,类体外定义inline且定义必须在头文件中;推荐连接:https://blog.csdn.net/weixin_48669767/article/details/1127990592.纯虚函数使用1.抽象类的析构函数应当为虚函数:保证调用子类的析构函数,会自动调用基类的析构函数,有原创 2022-01-21 13:58:52 · 289 阅读 · 0 评论 -
std::thread执行异常解决:terminate called without an active exception
使用std::thread+lamba时,处理不当容易在成段错误或抛出异常:段错误:一般lamba表达式使用了传引用[&]方式,导致使用了释放的局部变量,应该使用传值[=]方式;抛出异常:线程创建后,如果不关心线程执行情况,可调用detach使线程分离:void GpioBeep::beepOutButton(int delayMs){ std::thread tdTmp([=, delayMs](){ gpioWrite(m_pin, BEEP_ON);原创 2021-12-08 10:05:16 · 966 阅读 · 0 评论 -
c++ 11 14 17 20后的新特性总结三:线程、期物、互斥量与临界区、条件变量、原子操作、内存模型
c++并发与同步特性thread、future、mutex、lock、atomic、memory_order#include <thread>#include <chrono>//时间int threadFun(const char* str){ cout<<str<<endl; return str==nullptr ? 13:14;}void thread_create(){ std::thread t([](){原创 2020-12-18 17:00:13 · 254 阅读 · 1 评论 -
c++ 11 14 17 20后的新特性总结二:无序容器、元组、正则表达式
1.容器#include <forward_list>//单向链表#include <list> //有序容器#include <map>#include <set> //无序容器#include <unordered_set>#include <unordered_map>auto tupleFoo(int num){ if(0 == num) return std::make原创 2020-12-17 17:46:10 · 177 阅读 · 0 评论 -
c++ 11 14 17 20后的新特性总结(持续更新)
c++ 11 14 17 20后的新特性c++111.autoauto 不能用于函数传参、auto 还不能用于推导数组类型2.lambda:匿名函数、闭包(闭包就是能够读取其他函数内部变量的函数-定义在一个函数内部的函数)Lambda 表达式的基本语法如下:[捕获列表](参数列表) mutable(可选) 异常属性-> 返回类型{// 函数体}3.右值引用c++144.结构化绑定5.std::thread6.std::regex7.concept8.nullptr取代原创 2020-12-17 11:27:31 · 8515 阅读 · 0 评论 -
闭包(closure):function、bind、lambda相关性
本文是C++0x系列的第四篇,主要是内容是C++0x中新增的lambda表达式, function对象和bind机制。之所以把这三块放在一起讲,是因为这三块之间有着非常密切的关系,通过对比学习,加深对这部分内容的理解。在开始之间,首先要讲一个概念,closure(闭包),这个概念是理解lambda的基础。下面我们来看看wikipedia上对于计算机领域的closure的定义:A closure (also lexical closure, function closure or function valu转载 2020-12-14 14:46:06 · 315 阅读 · 0 评论 -
初识lambda表达式
概述C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}可以看到,Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-> 返回值类型、{函数体}.Lambda 语法分析2.1 [函数对象参数]标识一个 Lambda 表达式的开始,.翻译 2020-12-14 14:17:56 · 134 阅读 · 0 评论 -
父类成员在子类构造函数中赋值方法——子类显示调用父类带参构造函数
父类:class ApplicatorBase: public QObject{Q_OBJECTpublic: ApplicatorBase(EVENT_ID_E targetAddr); ~ApplicatorBase();public: EVENT_ID_E m_targetAddr;//标识左右手柄};ApplicatorBase::ApplicatorBase(EVENT_ID_E targetAddr):m_targetAddr(targetAddr)原创 2020-10-28 18:02:33 · 731 阅读 · 0 评论