08 2016 档案
重要:C/C++变量的自动初始化
摘要:C/C++变量的自动初始化——重要 阅读全文
posted @ 2016-08-31 11:18 苦涩的茶 阅读(5921) 评论(0) 推荐(0)
C++中基类的析构函数为什么要用virtual虚析构函数
摘要:知识背景 要弄明白这个问题,首先要了解下C++中的动态绑定。 关于动态绑定的讲解,请参阅: C++中的动态类型与动态绑定、虚函数、多态实现 正题 直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基 阅读全文
posted @ 2016-08-31 10:32 苦涩的茶 阅读(42094) 评论(2) 推荐(14)
如何打印Qt中的枚举所对应的字符串
摘要:比如,想获得socket的状态枚举文字, 代码如下: 输出为: 当想要输出当前socket的状态的时候,可以看下面代码 输出为 转自:http://blog.csdn.net/u012199908/article/details/50325571 阅读全文
posted @ 2016-08-30 15:28 苦涩的茶 阅读(2889) 评论(0) 推荐(0)
用route命令解决多出口的问题
摘要:路由设置,非常不错 阅读全文
posted @ 2016-08-30 14:56 苦涩的茶 阅读(1547) 评论(0) 推荐(0)
C/C++预处理指令
摘要:预处理指令 (Preprocessor Directives) 预处理指令是我们写在程序代码中的给预处理器(preprocessor)的命令,而不是程序本身的语句。预处理器在我们编译一个C++程序时由编译器自动执行,它负责控制对程序代码的第一次验证和消化。 所有这些指令必须写在单独的一行中,它们不需 阅读全文
posted @ 2016-08-24 15:55 苦涩的茶 阅读(527) 评论(0) 推荐(1)
成员函数后面加const,没有const,以及使用的区别
摘要:函数后面加const 编译器会自动给每一个函数加一个this指针。在一个类的函数后面加上const后,就表明这个函数是不能改变类的成员变量的(加了mutable修饰的除外,后面有讲)。实际上,也就是对这个this指针加上了const修饰。 显示结果:normal const a对象将调用普通show 阅读全文
posted @ 2016-08-24 15:23 苦涩的茶 阅读(2151) 评论(0) 推荐(0)
C++类中this指针的理解
摘要:先要理解class的意思。class应该理解为一种类型,象int,char一样,是用户自定义的类型。用这个类型可以来声明一个变量,比如int x, myclass my等等。这样就像变量x具有int类型一样,变量my具有myclass类型。理解了这个,就好解释this了,my里的this 就是指向m 阅读全文
posted @ 2016-08-24 14:56 苦涩的茶 阅读(96862) 评论(4) 推荐(20)
C++(1)C++类四个默认函数---构造函数、析构函数、拷贝函数、赋值函数
摘要:C++构造函数和析构函数 默认构造函数指不带参数或者所有参数都有缺省值的构造函数!!! (1)构造函数、析构函数与赋值函数 构造函数、析构函数与赋值函数是每个类最基本的函数。它们太普通以致让人容易麻痹大意, 其实这些貌似简单的函数就象没有顶盖的下水道那样危险。 每个类只有一个析构函数和一个赋值函数, 阅读全文
posted @ 2016-08-24 14:43 苦涩的茶 阅读(4613) 评论(0) 推荐(0)
C++中前置声明的应用与陷阱
摘要:前置声明的使用 有一定C++开发经验的朋友可能会遇到这样的场景:两个类A与B是强耦合关系,类A要引用B的对象,类B也要引用类A的对象。好的,不难,我的第一直觉让我写出这样的代码: 好的,完成,编译一下A.cpp,不通过。再编译B.cpp,还是不通过。编译器都被搞晕了,编译器去编译A.h,发现包含了B 阅读全文
posted @ 2016-08-24 13:41 苦涩的茶 阅读(1023) 评论(0) 推荐(0)
C++成员变量的初始化顺序问题
摘要:问题来源: 由于面试题中,考官出了一道简单的程序输出结果值的题:如下, 这时,那个考生这样回答:n1是2,n2是0。在我电脑输出结果为: 如果你也这样回答,那么你肯定不懂初始化成员列表的顺序。(注:因为n1初始化时,n2还没有初始化,所以此时n2不一定为0) 如果我把A类中构造函数改成: 此时输出结 阅读全文
posted @ 2016-08-23 13:11 苦涩的茶 阅读(1088) 评论(0) 推荐(0)
子类构造、析构时调用父类的构造、析构函数顺序
摘要:析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了。 而定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。 原因: 派生类构造函数中的某些初始化可能是基于基类的, 阅读全文
posted @ 2016-08-23 11:43 苦涩的茶 阅读(15500) 评论(0) 推荐(0)
C++对析构函数的误解
摘要:C++析构前言 析构函数在什么时候会自动被调用,在什么时候需要手动来调用,真不好意思说偶学过C++…今日特此拨乱反正。 C++析构误解正文 对象在构造的时候系统会分配内存资源,对一些数据成员进行初始化或者赋值;一个良好的class需要有资源回收的机制,而这一操作便落在了析构函数的头上,析构函数来负责 阅读全文
posted @ 2016-08-23 11:22 苦涩的茶 阅读(1435) 评论(0) 推荐(0)
从 Qt 的 delete 说开来
摘要:[-] Qt半自动的内存管理 父子关系 建立与解除 获取父子对象 deleteLater 删除自己 later 一些例子 无关痛痒 单独列一个吧 隐蔽很深 参考 [-] 在C++中学习过程中,我们都知道: delete 和 new 必须 配对使用(一 一对应):delete少了,则内存泄露,多了麻烦 阅读全文
posted @ 2016-08-23 10:14 苦涩的茶 阅读(429) 评论(0) 推荐(0)
Qt学习之路(tip): parent参数
摘要:这是一篇很简单的文章,仅仅是用来说明一下一个参数的作用,因此我把它写成了tip,而不是接下来的17. 程序写的多了,你会发现几乎所有的Qt类的构造函数都会有一个parent参数。这个参数通常是QObject* 或者是 QWidget* 类型的。很多情况下它都会有一个初始值0,因此,即便你不去给它复制 阅读全文
posted @ 2016-08-23 09:15 苦涩的茶 阅读(421) 评论(0) 推荐(0)
C++ 初始化列表
摘要:何谓初始化列表 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。 struct 阅读全文
posted @ 2016-08-22 16:54 苦涩的茶 阅读(388) 评论(0) 推荐(0)
C++构造函数后面的冒号
摘要:构造函数后加冒号是初始化表达式:有四种情况下应该使用初始化表达式来初始化成员:1:初始化const成员2:初始化引用成员3:当调用基类的构造函数,而它拥有一组参数时 4:当调用成员类的构造函数,而它拥有一组参数时。 在程序中定义变量并初始化的机制中,有两种形式,一个是我们传统的初始化的形式,即赋值运 阅读全文
posted @ 2016-08-22 15:35 苦涩的茶 阅读(3760) 评论(0) 推荐(0)
Qt中的串口编程之一
摘要:QtSerialPort 简介 QtSerialPort模块是Qt5库的附加部分,为硬件和虚拟的串口提供了统一的接口。注意:该模块也增加了对Qt4的支持。 串口由于其简单和可靠,目前在像嵌入式系统,机器人等工业中依旧用得很多。使用QtSerialPort模块,开发者可以大大缩短开发串口相关的应用程序 阅读全文
posted @ 2016-08-19 15:44 苦涩的茶 阅读(6145) 评论(0) 推荐(0)
Qt Q_DECLARE_METATYPE说明——让自定义的类型设置到QVariant
摘要:在使用Qt进行应用程序开发时,经常要自定义数据类型,而且在需要的时候还要把这些数据放到QVariant中去。因为QVariant是一个接受绝大部分类型的数据类型。为了达到这个目的,就必须使用Q_DECLARE_METATYPE。 下面以一段简单的代码说明Q_DECLARE_METATYPE的用法和注 阅读全文
posted @ 2016-08-19 15:17 苦涩的茶 阅读(4314) 评论(1) 推荐(0)
Qt中Pro文件变量详细说明
摘要:学习Qt时,发现有些知识看了不经常用就忘了,以下是书本上写的一些关于qmake的相关知识,自己看后,打算把一些经常用到的记下来,整理整理。 Qt程序一般使用Qt提供的qmake工具来编译。 qmake工具可以使用与平台无关的.pro文件生成与平台相关的makefile。该工具包含了调用Qt内置代码生 阅读全文
posted @ 2016-08-19 15:15 苦涩的茶 阅读(3756) 评论(1) 推荐(1)
C++/C语言的标准库函数与运算符的区别new/delete malloc/free
摘要:malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。下面来看他们的区别。 一、操作对象有所不同 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。对于非内部数据类型的对象而言,光用mal 阅读全文
posted @ 2016-08-16 15:41 苦涩的茶 阅读(2105) 评论(0) 推荐(0)
View与Model绑定注意事项 (视图无数据显示)
摘要:Qt 中视图与模型绑定时,模型必须使用new来创建。否则刚开始初始化的时候,视图无数据显示,或者后期视图不能随着模型的改变而改变。 具体原因:我猜测是局部变量生命周期的问题。new 的变量在堆中,除非手动释放,否则一直存在。如果不new一个Model,把Model变量放在类成员变量中也行,视图就可以 阅读全文
posted @ 2016-08-16 13:10 苦涩的茶 阅读(582) 评论(0) 推荐(0)
(五)Qt实现自定义模型基于QAbstractItemModel
摘要:一个小例子 QTableView + QStandardItemModel 转自:http://qimo601.iteye.com/blog/1535292 阅读全文
posted @ 2016-08-16 11:19 苦涩的茶 阅读(3169) 评论(0) 推荐(0)
(四)Qt实现自定义模型基于QAbstractTableModel (一般)
摘要:Qt实现自定义模型基于QAbstractTableModel 两个例子 例子1代码 Main.cpp currencymodel.h currencymodel.cpp 例子2代码 Main.cpp citymodel.h citymodel.cpp 转自:http://qimo601.iteye. 阅读全文
posted @ 2016-08-16 10:59 苦涩的茶 阅读(10735) 评论(0) 推荐(0)
(三)使用预定义模型QDirModel的例子
摘要:使用预定义模型QDirModel的例子 Main.cpp directoryviewer.h directoryviewer.cpp 转自:http://qimo601.iteye.com/blog/1534325 阅读全文
posted @ 2016-08-16 10:47 苦涩的茶 阅读(868) 评论(0) 推荐(0)
(二)使用预定义模型 QStringListModel例子
摘要:使用预定义模型 QStringListModel例子 源代码如下 Main.cpp teamleadersdialog.h teamleadersdialog.cpp 转自:http://qimo601.iteye.com/blog/1534322 阅读全文
posted @ 2016-08-16 10:38 苦涩的茶 阅读(451) 评论(0) 推荐(0)
(一) Qt Model/View 的简单说明
摘要:(一) Qt Model/View 的简单说明 、预定义模型 (二)使用预定义模型 QstringListModel例子 (三)使用预定义模型QDirModel的例子 (四)Qt实现自定义模型基于QAbstractTableModel (五)Qt实现自定义模型基于QAbstractItemModel 阅读全文
posted @ 2016-08-16 10:35 苦涩的茶 阅读(1298) 评论(0) 推荐(0)
QT全局宏变量的实现
摘要:qt中如何实现定义一个宏,在整个工程中都可以实现呢?下面我来写一个亲测的例子: pro中添加如下宏定义代码: 在.cpp中测试代码如下: 运行结果如下: 如此,qt中一个全局的宏变量就定义成功了。注意关键性的字符""。 转自:http://www.it165.net/pro/html/201502/ 阅读全文
posted @ 2016-08-09 16:42 苦涩的茶 阅读(698) 评论(0) 推荐(0)
c++中的前向声明
摘要:整理于: http://blog.csdn.net/heyutao007/article/details/6649741 http://blog.sina.com.cn/s/blog_68d90fdb0100yapr.html 1. 前向声明好处 1)不必要的#include 会增加编译时间. 2) 阅读全文
posted @ 2016-08-09 14:51 苦涩的茶 阅读(1930) 评论(0) 推荐(0)
Qt/C++ 构造函数与explicit
摘要:1、默认构造函数 默认构造函数是指所有参数都提供了默认值的构造函数,通常指无参的构造函数或提供默认值的构造函数。如类Test1和Test2的构造函数 如果你没有为你的类提供任何构造函数,那么编译器将自动为你生成一个默认的无参构造函数。一旦你为你的类定义了构造函数,哪怕只是一个,那么编译器将不再生成默 阅读全文
posted @ 2016-08-09 11:02 苦涩的茶 阅读(9042) 评论(0) 推荐(2)
C++11 新特性:Lambda 表达式
摘要:参考文章:https://blogs.oracle.com/pcarlini/entry/c_1x_tidbits_lambda_expressions 或许,Lambda 表达式算得上是 C++ 11 新增特性中最激动人心的一个。这个全新的特性听起来很深奥,但却是很多其他语言早已提供(比如 C#) 阅读全文
posted @ 2016-08-05 16:50 苦涩的茶 阅读(868) 评论(0) 推荐(0)
C++:在堆上创建对象,还是在栈上?
摘要:这篇文章来自于一次讨论:http://www.devbean.net/2013/01/qt-study-road-2-model-view/#comment-17532。关于究竟是在堆上还是在栈上创建对象,可能很多初学者感到迷惑。我想可以把这部分内容拿出来详细介绍一下。现在,假设你已经清楚什么是堆, 阅读全文
posted @ 2016-08-05 15:49 苦涩的茶 阅读(7701) 评论(0) 推荐(2)
类的静态成员变量
摘要:因为类的静态成员变量是所有实例共用的.所以得在类外初始化. 调用的时候可以通过对象调用,也可以通过类直接调用 输出“B::n=1 Bobj.n=1 Bobj.Aobj.i=0 ” 私有的静态成员变量也是放在类外初始化的.这看起来跟它的私有属性不相符. 再做下面的测试,发现了一个有趣的现象. 类外的初 阅读全文
posted @ 2016-08-04 17:26 苦涩的茶 阅读(1139) 评论(0) 推荐(1)
QT全局宏变量的实现
摘要:qt中如何实现定义一个宏,在整个工程中都可以实现呢?下面我来写一个亲测的例子: pro中添加如下宏定义代码: DEFINES += HELLO=\"$$PWD/\" DEFINES += SUCCESS=\"string\" DEFINES += HELLO=\"$$PWD/\" DEFINES + 阅读全文
posted @ 2016-08-04 17:15 苦涩的茶 阅读(1546) 评论(0) 推荐(0)
Qt 自定义事件的实现
摘要:初学Qt,用了Qt自带的事件,然后想怎么才能定义自己的事件呢?又如何使用自定义事件呢?看了篇文章,说先要子类化QEvent,然后定义自己的QEvent::Type,然后重写QWidget::event()函数,然后就可以调用QCoreApplication::sendEvent()或者QCoreAp 阅读全文
posted @ 2016-08-03 16:49 苦涩的茶 阅读(5736) 评论(0) 推荐(2)
Qt 事件处理的五个层次
摘要:看了这篇文章(见http://devbean.blog.51cto.com/448512/231861),然后经过自己的思考,把Qt事件处理的五个层次、同时也是Qt时间处理的流程画了出来。若有不对请批评指正,不胜感激! 层次图(即事件处理流程图)及其说明如下: 说明如下: sendEvent()会把 阅读全文
posted @ 2016-08-03 16:23 苦涩的茶 阅读(839) 评论(0) 推荐(0)
Qt 事件过滤器
摘要:Qt创建了QEvent事件对象之后,会调用QObject的event()函数做事件的分发。有时候,你可能需要在调用event()函数之前做一些另外的操作,比如,对话框上某些组件可能并不需要响应回车按下的事件,此时,你就需要重新定义组件的event()函数。如果组件很多,就需要重写很多次event() 阅读全文
posted @ 2016-08-03 16:12 苦涩的茶 阅读(519) 评论(0) 推荐(0)
QT 信号与槽
摘要:总结: 1、signals前面不可加public、private和protected进行修饰;slots前面可以加,因为Qt说槽函数可以当普通函数使用。 2、signals区域的函数必须是void类型,而且这些信号函数没有函数体,也就是说不可以自己定义这些信号函数,你只要声明它就够了,其它不用管,Q 阅读全文
posted @ 2016-08-03 14:53 苦涩的茶 阅读(9104) 评论(0) 推荐(0)
Qt 反射
摘要:简介 本文主要讲解Qt是如何实现反射,以及一点点反射使用的小心得。 文章概览 Qt反射内幕小窥 详细内容 反射前期准备 得到注册的类成员变量 得到注册的类成员函数 访问类成员属性(get,set) 调用注册的函数 反射应用 总结 Qt反射内幕小窥 Qt反射机制是基于moc(meta object c 阅读全文
posted @ 2016-08-03 09:08 苦涩的茶 阅读(5332) 评论(0) 推荐(1)
variable `xxx' has initializer but incomplete type
摘要:错误:variable `xxx' has initializer but incomplete type 原因:xxx对应的类型没有找到,只把xxx声明了但是没给出定义。编译器无从确认你调用的构造函数是什么,在哪儿一般是没有包含定义xxx的头文件。 比如: 不包含头文件的话会报一下错误: 使用#i 阅读全文
posted @ 2016-08-02 14:15 苦涩的茶 阅读(10937) 评论(0) 推荐(0)


// 1.生成目录索引列表