C++
Barry.Ji
无限进步, 无限可能
展开
-
Qt学习记录--01 Qt的model/view架构介绍
一 引入: 有时,我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应用程序的界面中。早期的 Qt 要实现这个功能,需要定义一个组件,在这个组件中保存一个数据对象,比如一个列表。我们对这个列表进行查找、插入等的操作,或者把修改的地方写回,然后刷新组件进行显示。这个思路很简单,也很清晰,但是对于大型程序,这种设计就显得苍白无力。比如,在一个大型系统中,转载 2016-04-14 16:50:15 · 209 阅读 · 0 评论 -
架构模式--C++类模板实现事件触发机制
//带一个参数的事件触发器templateclass CEvent{private: typedef void (*Handle)(PTR);public: CEvent(Handle handle) { _handleVec.push_back(handle); } CEvent(){原创 2017-03-09 09:02:13 · 2253 阅读 · 0 评论 -
C++注意事项--02 函数指针用于带默认参数的函数
我们不能在函数指针中使用函数参数的默认值。这是 C++ 语言的限制:参数默认值只能使用在直接地函数调用中。当使用函数指针取其地址的时候,默认参数是不可见的!原创 2016-04-21 19:41:34 · 4582 阅读 · 1 评论 -
Qt学习记录--05 函数指针以及类函数指针用于Qt信号槽
一 函数指针: 顾名思义,函数指针即指向函数之指针,它与其他普通类型指针一样,所占内存为4个字节(32位系统)。所不同的是其内部存储了函数的地址而非数据地址,函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。 其一般的使用非常简单,假如返回值为int类型,入参有两个从左到右分别为char*和int,那么声明此类函数指针如下:原创 2016-04-19 09:36:07 · 8427 阅读 · 2 评论 -
C++11新语法--01 Lambda表达式
C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体} 可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返回值类型、{函数体}。下面分别转载 2016-04-19 11:01:00 · 306 阅读 · 0 评论 -
编写高质量的C++代码--01 减少文件之间的编译依赖
一 概述: 在实际来发过程中,经验略少的开发者经常遇到这样的问题:只对一个头文件中的定义进行了简单的修改,却导致很多文件的重新编译,浪费了大量的时间。这种使人厌烦的问题是由于那些文件依赖了(#include)你修改的头文件,当然,依赖是迟早的事,但是有什么好的解决办法减少没必要的编译动作呢?下面进行讲述。最根本的出发点是尽量避免在.h文件中包含(#include)其他的.h文原创 2016-04-18 16:41:38 · 1299 阅读 · 1 评论 -
Qt学习记录--04 Qt的对话框介绍
一 引言: 熟悉win32(MFC)的小伙伴们会知道, 对话框分为模态对话框和非模态对话框,他们的明显差异是: 模态对话框在弹出后,会阻塞同一应用程序中其它窗体的输入,即无法获取鼠标和键盘等响应。模态对话框很常见,比如记事本的“打开文件”功能。当“打开文件”对话框弹出后,我们无法对此外的窗口进行操作的。而非模态对话框在弹出后,其他窗体依旧可以获取响应。例如记事本的“查找”对话框,原创 2016-04-17 22:11:30 · 519 阅读 · 0 评论 -
Qt学习记录--03 Qt的信号槽的使用
一 前言: 上篇文章中对Qt的信号槽进制作了简要介绍并对比了Qt5与Qt4中的差异,下面将通过实际代码举例说明信号槽的使用,谢谢支持。二 代码: 为了代码简介(少写代码~),笔者使用UI界面,如下: 下面是代码:// widget原创 2016-04-16 20:27:54 · 442 阅读 · 0 评论 -
Qt学习记录--02 Qt的信号槽机制介绍(含Qt5与Qt4的差异对比)
一 闲谈: 熟悉Window下编程的小伙伴们,对其消息机制并不陌生, 话说:一切皆消息。它可以很方便实现不同窗体之间的通信,然而MFC库将很多底层的消息都屏蔽了,尽管使用户更加方便、简易地处理消息,但也让人特别是没有Win32编程基的人感到迷茫,不是为何,笔者也是深受其害的。 详细描述就不在此展开,感兴趣的请查阅浩瀚如海的资料。。。二 简要介绍:原创 2016-04-16 18:56:01 · 2702 阅读 · 0 评论 -
C++ transfrom的使用
1 定义: 假设你已知, 自补2 用法下面代码简要说明了2种使用方法: a. 将容器的元素当做入参b. 用容器的元素调用其成员函数3 代码实现#include #include #include #include //!< for transfrom function#include //!< for mem_fun function原创 2016-04-14 02:41:37 · 1214 阅读 · 0 评论 -
C/C++开发--#pragma pack(n)和__attribute__((aligned(m)))的区别
前者告诉编译器结构体或类内部的成员变量相对于第一个变量的地址的偏移量的对齐方式,缺省情况下,编译器按照自然边界对齐,当变量所需的自然对齐边界比n大 时,按照n对齐,否则按照自然边界对齐;后者告诉编译器一个结构体或者类或者联合或者一个类型的变量(对象)分配地址空间时的地址对齐方式。也就是说,如果将__attribute__((aligned(m)))作用于一个类型,那么该类型的变量在分配地址空间时,转载 2017-07-17 20:20:38 · 528 阅读 · 0 评论