C++
文章平均质量分 69
GenTwKiller
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
回调函数
本次再一次见证Qt信号和槽的强大。下面是所遇所得,分享下。 回调函数,使用需要是static或者全局,即不能对其特指。 使用的情景:经常遇见使用第三方的SDK,需要将我们的回调函数进行注册。 遇到的问题:回调函数中使用非静态成员,即静态成员访问非静态的。 涉及的细节:通常这种回调被第三方工作与其他线程。 首先,关于细节,我们可以将涉及的数据进行拷贝,通过Qt的信号和槽机制,emit出需要处...原创 2018-12-28 13:22:01 · 304 阅读 · 0 评论 -
设计模式-策略模式
策略模式,通过组合的手段将接口进行封装。即,将抽象接口使用于组合类中。 // 策略 抽象类 class Strategy{ public: virtual void startRun() = 0; }; class SmartPolicy:public Strategy{ void startRun() override; }; class SillyPolicy:public...原创 2019-03-26 14:08:53 · 149 阅读 · 0 评论 -
设计模式-单例模式
单例:保证一个类只能有一个实例,并提供一个全局唯一的访问 有以下特征: 它有一个指向唯一实例的静态指针,并且是私有的; 它有一个公有的函数,可以获取这个唯一的实例,并且在需要的时候创建该实例; 它的构造函数是私有的,这样就不能从别处创建该类的实例。 class DataBase{ private: DataBase(); static DataBase* m_pInst...原创 2019-03-26 13:43:47 · 154 阅读 · 0 评论 -
设计模式-工厂模式
工厂模式,用于解决对象的构造问题,即new的执行者 常见的有: 简单工厂:单个工厂,多种产品,拓展时对工厂类进行修改;需要知道产品类型 工厂方法:多个工厂,每个工厂生产一种产品,需要知道那个工厂 抽象工厂:多个工厂,每个工厂可生产不同的产品, 如下,即抽象工厂 // 产品1 class Cpu { public: virtual void startWork() = 0; }...原创 2019-03-26 13:27:52 · 144 阅读 · 0 评论 -
二分查找-冒泡排序
// 折半查找 二分查找 void mid_find(int *p, int left, int right, int find) { if(left > right) { qDebug() << "no item"; return; } int mid = (right+left) / 2; int m...原创 2019-03-26 10:24:50 · 183 阅读 · 0 评论 -
c++11
delete.override.委托构造函数 class Base { public: Base() {} // 禁用拷贝构造函数 Base(Base const &other) = delete; // 禁用赋值操作 Base& operator = (Base const &other) = delete; virt...原创 2019-03-18 18:02:02 · 207 阅读 · 0 评论 -
sizeof
DESC sizeof是个用于计算内存占用的运算符。 注意: 编译期间决定其大小,不同的操作系统位数反馈的大小不同。 涉及字节对齐。 sizeof,strlen const char *pstr = "sGood"; char strA[] = "sGood"; char strB[20] = {'s','G','o','o','d'}; char s...原创 2019-03-18 16:12:14 · 175 阅读 · 0 评论 -
C++ 单向链表
杂 长时间使用比较高级的语法,较与链表这种基本操作也只是略知。虽然是基本操作,但是code时还是出现了错误。最终还是那句话,脑子不够强大,链表还是要手画。 code class MyNode { public: int data; MyNode *next; MyNode(int _data) { data = _data; next = nullptr; } };...原创 2019-03-18 14:13:49 · 203 阅读 · 0 评论 -
khala-Study
目录 瓢 MAP 码一码 瓢 最近,看了下khala部分源码,对于c++的特性觉得甚是神奇,再次记录一笔,大致画了个瓢。 MAP 如上,大致关系。 基本原理:每个对象拥有一个map维护自身函数。 码一码 typedef std::function<bool(int &, QString &, int)> RegisterMessageCallBa...原创 2019-03-06 17:53:24 · 471 阅读 · 0 评论 -
STL
STL,算法部分 // 测试数据 typedef struct _data { bool good; int num; QString desc; _data(bool b = false, int n = 0, QString s = "") { num = n; good = b; desc = s; ...原创 2019-02-28 16:23:14 · 166 阅读 · 0 评论 -
动态库生成与使用
杂 目录 杂 创建主工程: 创建动态库工程: 主工程使用动态库 库一般分为两种:静态库(.a 、.lib)动态库(.so 、.dll )所谓静态、动态是指链接过程。 动态链接的基本思想:把程序按照模块拆分成各个相对独立的部分,在程序运行时才将它们链接在一起形成一个完整的程序,而不同于静态链接把所有的程序模块都链接成一个单独的可执行文件。本篇介绍win下动态库的生成和使用。 我们统...原创 2019-02-21 14:13:15 · 322 阅读 · 0 评论 -
Qt-ThreadPool
闲谈 前几篇,说了Qt线程的最常见的QThread和偷懒的QtConcurrent,这两者使用的场景是不同的,前者更具有交互型,后者独立。对于QtConcurrent这种高级API如何让他发挥极致呢,我们就要用到QThreadPool和完美的QEventLoop,当然C++11就是最强搭档。在实践中,再次体会到Qt的事件驱动框架,以及信号和槽。可以这样说:谈及Qt的线程,线程工作与卡槽中。本篇是...原创 2019-01-25 16:52:08 · 575 阅读 · 0 评论 -
namespace
近期,接触了namespace,在该作用域下实现回调的注册。自己对namespace的理解有误,导致编译出现各种错误,又或者在给他人调用时,出现未定义声明等各种问题。 最终,还好定位到问题:对于namespace下的变量声明定义理解有误。 我们通常在.h文件中声明各种变量,在.cpp文件中实现它,于是乎,我们这样下了代码: // water.h // 第一次 namespace Water...原创 2019-01-18 15:17:17 · 242 阅读 · 0 评论 -
Qt-Src-PrivateHide
Qt的源码结构甚是神奇,一堆宏,充分体现高效的设计,将面向对象进行到底。关于封装,本次了解到一个类的稀有成员如何隐藏。先看下普通的一个类, class CusData:public QObject{ Q_OBJECT public: CusData(QObject *parent = nullptr); ~CusData(); void setData(int ...原创 2019-01-02 14:17:06 · 408 阅读 · 0 评论 -
model with qml
目录 闲谈 c++部分 qml中使用 闲谈 Qt的model/view框架使得data和show进行了分离,且对应的view有适配的model,view层面的继承和model层面的继承刚好对应。 但是,我们常常需要定制view所需的子控件,这就要使用delegate。在widget中,还是比较麻烦的,更好的继承QStyledItemDelegate,重写Reimplemented Pu...原创 2019-01-11 10:14:44 · 293 阅读 · 0 评论 -
tcp-数据包
我们往往使用tcp协议传输数据,都会自定义一个包裹,本次分享下对包的理解,其基本结构如下: 在发送端,我们只需要将完整的包裹一次发送出去即可,eg // 字节 QByteArray bytes; PackageInfo info; info.exUse_int = 1000; info.exUse_char = '1'; ...原创 2019-01-03 16:00:27 · 340 阅读 · 0 评论 -
设计模式-模板方法
模板方法,通过继承的手段进行接口封装。即基类中使用接口,推迟于子类中实现 class BaseEx{ public: virtual void fun_A() = 0; virtual void fun_B() = 0; // 推迟于子类中实现 void startFun(); }; class Cus:public BaseEx{ void fun_A...原创 2019-03-26 14:21:29 · 143 阅读 · 0 评论
分享