2016年9月8日
摘要: 今天遇到了一个由Qt::WA_DeleteOnClose造成的野指针问题,在网上搜到的一个求助贴如下(http://bbs.csdn.net/topics/380182058): 主窗口类QMainWindow的头文件里定义了一个QDialog类的指针:QDialog *dialog;现有如下函数语 阅读全文
posted @ 2016-09-08 11:17 苦涩的茶 阅读(1797) 评论(0) 推荐(0)
摘要: delete p后,只是释放了指针指向的内存空间。p并不会自动被置为NULL,而且指针还在,同时还指向了之前的地址 delete NULL编译器不会报错(因为delete空指针是合法的) 例: 对一个非空指针delete后,若没有赋NULL,若再次delete的话,有可能出现问题。 如下代码 int 阅读全文
posted @ 2016-09-08 10:32 苦涩的茶 阅读(13131) 评论(0) 推荐(0)
摘要: 最近项目遇到了一个bug,压力测试ui总会崩溃,gdb调试未果,跑到了库函数,无从查起: (gdb)bt #0 0x4146b1e4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&,QPoint const&, int, QPa 阅读全文
posted @ 2016-09-08 10:15 苦涩的茶 阅读(3878) 评论(0) 推荐(1)
摘要: 目录 Qt半自动的内存管理 父子关系 建立与解除 获取父子对象 deleteLater 删除自己 later 一些例子 无关痛痒 单独列一个吧 隐蔽很深 参考 在C++中学习过程中,我们都知道: delete 和 new 必须 配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。 Q 阅读全文
posted @ 2016-09-08 09:56 苦涩的茶 阅读(2867) 评论(0) 推荐(0)
  2016年9月2日
摘要: 注:此文是站在Qt5的角度说的,对于Qt4部分是不适用的。 1.先说Qt信号槽的几种连接方式和执行方式。 1)Qt信号槽给出了五种连接方式: 2)信号槽的调用方式和线程: UniqueConnection 模式:严格说不算连接方式,方式就是4种,此只是一个附加的参数。不讨论。 AutoConnect 阅读全文
posted @ 2016-09-02 16:57 苦涩的茶 阅读(1782) 评论(0) 推荐(0)
摘要: 昨晚看Qt的Manual,突然发现下一个版本的Qt中(Qt4.7.4、Qt4.8等)增加了一个特赞的介绍多线程的文章 : Thread Basics 注意: 该链接以后会失效,但是 到时候你直接看Qt自带Manual就行了 本文不是严格的翻译 dbzhang800 2011.06.18 使用线程 基 阅读全文
posted @ 2016-09-02 16:24 苦涩的茶 阅读(13172) 评论(0) 推荐(1)
摘要: QThread 使用探讨 2010-10-23 00:30 注意:本文停止更新,请优先考虑 Qt 线程基础(QThread、QtConcurrent等) dbzhang800 2011.06.18 QThread 似乎是很难的一个东西,特别是信号和槽,有非常多的人(尽管使用者本人往往不知道)在用不恰 阅读全文
posted @ 2016-09-02 16:17 苦涩的茶 阅读(9476) 评论(0) 推荐(0)
  2016年9月1日
摘要: QThread具体使用,主要包括方法moveToThread()的使用 阅读全文
posted @ 2016-09-01 15:15 苦涩的茶 阅读(21501) 评论(3) 推荐(4)
  2016年8月31日
摘要: C/C++变量的自动初始化——重要 阅读全文
posted @ 2016-08-31 11:18 苦涩的茶 阅读(5910) 评论(0) 推荐(0)
摘要: 知识背景 要弄明白这个问题,首先要了解下C++中的动态绑定。 关于动态绑定的讲解,请参阅: C++中的动态类型与动态绑定、虚函数、多态实现 正题 直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基 阅读全文
posted @ 2016-08-31 10:32 苦涩的茶 阅读(42077) 评论(2) 推荐(14)
  2016年8月30日
摘要: 比如,想获得socket的状态枚举文字, 代码如下: 输出为: 当想要输出当前socket的状态的时候,可以看下面代码 输出为 转自:http://blog.csdn.net/u012199908/article/details/50325571 阅读全文
posted @ 2016-08-30 15:28 苦涩的茶 阅读(2881) 评论(0) 推荐(0)
摘要: 路由设置,非常不错 阅读全文
posted @ 2016-08-30 14:56 苦涩的茶 阅读(1536) 评论(0) 推荐(0)
  2016年8月24日
摘要: 预处理指令 (Preprocessor Directives) 预处理指令是我们写在程序代码中的给预处理器(preprocessor)的命令,而不是程序本身的语句。预处理器在我们编译一个C++程序时由编译器自动执行,它负责控制对程序代码的第一次验证和消化。 所有这些指令必须写在单独的一行中,它们不需 阅读全文
posted @ 2016-08-24 15:55 苦涩的茶 阅读(516) 评论(0) 推荐(1)
摘要: 函数后面加const 编译器会自动给每一个函数加一个this指针。在一个类的函数后面加上const后,就表明这个函数是不能改变类的成员变量的(加了mutable修饰的除外,后面有讲)。实际上,也就是对这个this指针加上了const修饰。 显示结果:normal const a对象将调用普通show 阅读全文
posted @ 2016-08-24 15:23 苦涩的茶 阅读(2144) 评论(0) 推荐(0)
摘要: 先要理解class的意思。class应该理解为一种类型,象int,char一样,是用户自定义的类型。用这个类型可以来声明一个变量,比如int x, myclass my等等。这样就像变量x具有int类型一样,变量my具有myclass类型。理解了这个,就好解释this了,my里的this 就是指向m 阅读全文
posted @ 2016-08-24 14:56 苦涩的茶 阅读(96839) 评论(4) 推荐(20)
摘要: C++构造函数和析构函数 默认构造函数指不带参数或者所有参数都有缺省值的构造函数!!! (1)构造函数、析构函数与赋值函数 构造函数、析构函数与赋值函数是每个类最基本的函数。它们太普通以致让人容易麻痹大意, 其实这些貌似简单的函数就象没有顶盖的下水道那样危险。 每个类只有一个析构函数和一个赋值函数, 阅读全文
posted @ 2016-08-24 14:43 苦涩的茶 阅读(4604) 评论(0) 推荐(0)
摘要: 前置声明的使用 有一定C++开发经验的朋友可能会遇到这样的场景:两个类A与B是强耦合关系,类A要引用B的对象,类B也要引用类A的对象。好的,不难,我的第一直觉让我写出这样的代码: 好的,完成,编译一下A.cpp,不通过。再编译B.cpp,还是不通过。编译器都被搞晕了,编译器去编译A.h,发现包含了B 阅读全文
posted @ 2016-08-24 13:41 苦涩的茶 阅读(1014) 评论(0) 推荐(0)
  2016年8月23日
摘要: 问题来源: 由于面试题中,考官出了一道简单的程序输出结果值的题:如下, 这时,那个考生这样回答:n1是2,n2是0。在我电脑输出结果为: 如果你也这样回答,那么你肯定不懂初始化成员列表的顺序。(注:因为n1初始化时,n2还没有初始化,所以此时n2不一定为0) 如果我把A类中构造函数改成: 此时输出结 阅读全文
posted @ 2016-08-23 13:11 苦涩的茶 阅读(1086) 评论(0) 推荐(0)
摘要: 析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了。 而定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。 原因: 派生类构造函数中的某些初始化可能是基于基类的, 阅读全文
posted @ 2016-08-23 11:43 苦涩的茶 阅读(15494) 评论(0) 推荐(0)
摘要: C++析构前言 析构函数在什么时候会自动被调用,在什么时候需要手动来调用,真不好意思说偶学过C++…今日特此拨乱反正。 C++析构误解正文 对象在构造的时候系统会分配内存资源,对一些数据成员进行初始化或者赋值;一个良好的class需要有资源回收的机制,而这一操作便落在了析构函数的头上,析构函数来负责 阅读全文
posted @ 2016-08-23 11:22 苦涩的茶 阅读(1429) 评论(0) 推荐(0)

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