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