自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++11中类数据成员初始化方法详解

C++98为类中提供类成员的初始化列表。类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员  2.进入构造函数后在构造函数中执行一般计算  1.类里面的任何成员变量在定义时是不能初始化的。  2.一般的数据成员可以在构造函数中初始化。  3.const数据成员必须在构造函数的初始化列表中初始化。  4.static要在类的定义外面初始化。

2016-12-31 21:28:38 7003 2

原创 关于C++域作用符详解

c++里的范围有以下几种,全局作用域,名空间作用域,类作用域。编译器在编译时,默认从同级别的范围内开始解析符号,采用由内而外的顺序进行解析函数名。::被称为作用域解析符,用于引入一个作用域。::bind表示使用的是全局名空间内的bind函数。在c++里引入了名空间(namespace)的概念,比如std::cout就表示std名空间内的cout对象。1. ::域作用符,用来引用全局的变量、

2016-12-31 14:53:14 2476

转载 Qt 内存管理与布局管理器

一、new与delete        在C++学习中,new与delete必须成对使用,防止内存泄漏,可是在学习Qt时,我发现很多new,而却几乎找不到delete。在网上搜索得知:Qt完善了C++的内存管理机制,“如果指针对象有父对象,那么父对象在被释放时,会自动释放子对象”。所以我在练习时,创建的控件都传递了this指针,作为其父对象。但是,当我在练习布局管理器的时候,却出了问题。二

2016-12-30 08:56:54 726

转载 C++模板:函数模板和模板函数详解

1.函数模板的声明和模板函数的生成1.1函数模板的声明函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。函数模板的声明形式为:template(参数表){    函数体}其中,template是定义模板函数的关键字;template后面的尖括号不能省略;typename(或clas

2016-12-28 09:48:49 557

原创 关于 const 详解

一、关于const引用与非const引用常量在定义后不能被修改,所以定义时必须初始化.

2016-12-21 14:46:51 715

转载 QT信号和槽以结构体为参数传递复杂数据

QT 的信号和槽机制能十分方便的用来传输数据,但是如果数据种类比较多,分类比较多的时候,就需要更好地更高效的来传递数据的方法。以结构体作为参数是个很不错的选择。这几天写的程序正好需要以结构体来作为参数,但是网上搜的资料很少,讲的也不详细,我解决了问题后整理了一下,希望给有同样需求的同学一点帮助Q_DECLARE_METATYPE与qRegisterMetaTypeqRegist

2016-12-20 19:37:57 7292 1

转载 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解

一、编码历史与区别        一直对字符的各种编码方式懵懵懂懂,什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……是不是看的很晕,假如您细细的阅读本文你一定可以清晰的理解他们。Let'sGo!  很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。

2016-12-20 15:16:28 689

原创 C++ 多继承构造函数初始化列表调用顺序

class B1   {public:   B1(int i)    {cout"consB1" };//定义基类B1  class B2    {public:   B2(int j)    {cout"consB2" };//定义基类B2  class B3   {  public:    B3()    {cout"consB3 *" 

2016-12-20 10:43:04 4736 1

转载 关于Qt的事件循环以及状态机事件循环的思考

1.一般我们的事件循环都是由exec()来开启的,例如下面的例子:1 QCoreApplicaton::exec()2 QApplication::exec()3 QDialog::exec()4 QThread::exec()5 QDrag::exec()6 QMenu::exec()  这些都开启了事件循环,事件循环首先是一个无限“循环”,程序在exec()里面无限循

2016-12-18 13:41:16 2273

转载 Qt之Ui名字空间以及setupUi函数的原理和实现详解

用最新的QtCreator选择GUI的应用会产生含有如下文件的工程  下面就简单分析下各部分的功能。 .pro文件是供qmake使用的文件,不是本文的重点【不过其实也很简单的】,在此不多赘述。所以呢,还是从main开始,[cpp] view plain copy #include   #include "mainwindow.h"  

2016-12-17 19:44:54 771

转载 Qt窗体之间相互传值的三种方式

1.使用QT中的Signal&Slot机制进行传值我在mainwindow里面添加了一个textedit用来接收传递过来的值,dialog里面添加了一个ok按钮和一个lineedit,可以在lineedit里面输入信息点击ok按钮时传递到主窗口。dialog.h如下:#ifndef DIALOG_H#define DIALOG_H#include namespace Ui {

2016-12-16 23:03:57 15508 4

转载 Qt之信号signals和槽slots详解

目录(?)[-]一概述 二信号 四信号和槽的关联 五元对象工具 六程式样例 七应注意的问题 8信号和槽也不能携带模板类参数 9嵌套的类不能位于信号或槽区域内也不能有信号或槽 10友元声明不能位于信号或槽声明区内相反他们应该在普通C的privateprotected或public区内进行声明下面的例子是不合语法规范的 

2016-12-16 16:02:30 46071 1

转载 C++之explicit详解

在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用。既然C++语言提供这种特性

2016-12-15 10:55:16 621

转载 Qt之Q_OBJECT详解

信号和槽是Qt应用开发的基础,它可是将两个毫无关系的对象连接在一起,槽和普通的C++函数是一样的,只是当它和信号连接在一起后,当发送信号的时候,槽会自动被调用只有加入了Q_OBJECT,你才能使用QT中的signal和slot机制。        所有QObject的派生类在官方文档中都推荐在头文件中放置宏Q_OBJECT,那么该宏到底为我们做了哪些工作?在qobjectdef.h中有下面

2016-12-15 10:11:35 10909 1

原创 C++ namespace详解

关于C++ namespace,我们需要回答如下几个问题:1、什么是namespace?2、为什么有namespace?也就是namespace的作用3、namespace的使用方法有哪些?(一)什么是namespace?    首先我们看看C++标准规范中对namespace的定义如下:        named-namespace-definitio

2016-12-14 19:40:29 8133 1

转载 CMake 入门实战

从实例入手,讲解 CMake 的常见用法。Contents什么是 CMake入门案例:单个源文件多个源文件自定义编译选项安装和测试支持 gdb添加环境检查添加版本号生成安装包将其他平台的项目迁移到 CMake相关链接类似工具什么是 CMakeAll problems in computer science can be solved by another

2016-12-14 14:54:05 407

转载 CTest

一、初识CTest       CTest是CMake集成的一个测试工具,在使用CMakeLists.txt文件编译工程的时候,CTest会自动configure、build、test和展现测试结果       CTest有两个模式:模式一: 使用CMake configure 和 build工程,在CMakeLists.txt文件中,使用特殊的命令取创建tests。CTest用来

2016-12-14 14:50:00 7478 2

转载 开源库

这篇文章主要用来记录我见过的开源库,只记录最突出特点,方便以后用时查询。1.  3D图形引擎     openGL,事实上的图形学工业标准,提供图形学底层接口,直接使用openGL,对编程有较高要求。     openInventor , 对openGL简单地进行了封装,连添加节点地步骤也和openGL相似,不过是由类来操作,更直观一些。目前已经很少人用。     OSG

2016-12-14 11:08:14 916

原创 C++之构造函数(三) 多重继承构造函数初始化

#includeusing namespace std;class human{public:human(int);virtual ~human(){coutvirtual int walk(){return itwalk;}virtual void setwalk(int w){itwalk=w;}private:int itwalk;};huma

2016-12-13 19:35:30 1358 1

原创 C++之构造函数(二) 构造函数初始化

一、我的问题是关于初始化C++类成员的。我见过许多这样的代码: CSomeClass::CSomeClass() { x=0; y=1; } 而在别的什么地方则写成下面的样子: CSomeClass::CSomeClass() : x(0), y(1) { } 我的一些程序员朋友说第二种方法比较好,但他们都不知道为什么是这样。你能告诉我这两种

2016-12-13 10:31:29 512

原创 C++之构造函数(一)

构造函数是类的一个特殊的成员函数,它与类名同名。当定义该类的对象时,构造函数将被系统自动调用用以实现对该对象的初始化。构造函数不能有返回值,因而不能指定包括void在内的任何返回值类型。构造函数的定义域其他函数的定义一样,可以放在类内或类外。        与构造函数相对应的是析构函数,当撤销类对象时,析构函数回收存储空间,并做一些善后工作。构造函数与析构函数都属于类,可以由用户提供,也可以由

2016-12-13 09:34:46 374

转载 C++中 #ifdef 和#endif的作用

一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif它的作用是:当标识符已经被定义过(一般

2016-12-12 20:46:29 762 1

转载 浅谈 qmake 之 shadow build

shadow buildshadow build 是什么东西?就是将源码路径和构建路径分开(也就是生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁。这不是qmake独创的东西,cmake中早就使用这个东西了 cmakeqmake备注in-sourcecmake .

2016-12-11 18:54:58 562

转载 将Qt Creator导入Cmake项目

既然已经习惯了Qt Creator,索性将它作为通用IDE,另外还需要选择一个通用的make系统,当然这就是Qt Creator默认也支持的CMake。使用CMake作为构建系统,需要自己写CMakeLists.txt,相当于qmake下的pro,只不过更加与平台以及编译器无关。先来个最简单的CMakeLists.txt:[c-sharp] view plain cop

2016-12-11 18:22:18 12591

转载 用 cmake 构建Qt工程(对比qmake进行学习)

cmake vs qmakeqmake 是为 Qt 量身打造的,使用起来非常方便cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能内置的 out-of source 构建。(目前QtCreator为qmake也默认启用了该功能。参考:浅谈 qmake 之 shadow build)为各种平台和场景提供条件编译可处理多个可执行文件情况,和很好配合 QtTe

2016-12-11 17:29:55 13400 1

转载 Linux C工程管理 之autoconf与automake

一、autoconf     autoconf是一个用于生成可以自动的配置软件源代码包以适应多种UNIX系统的shell脚本的工具。由autoconf生成的配置脚本在运行时与autoconf是无关的,也就是说,配置脚本的用户并不需要拥有autoconf。由autoconf生成的这些脚本通常被命名为configure,它们检查当前系统是否满足软件正常运行所需要的特征,并根据检查得到的信息生成Ma

2016-12-11 12:26:34 823

原创 关于Qt::WindowFlags枚举类型的全面解析

在使用Qt设计的时候经常会看到QWidget控件的构造函数出现下面这样一句话:    1 QWidget(QWidget *parent=0,Qt::WindowFlags f=0)    QWidget *parent=0这段代码容易理解,是指父窗口部件的指定。     Qt::WindowFlags f=0这代码就有一些让人不解了,其实它是指定控件的窗口标识的。值为0即Qt::Widg

2016-12-07 15:20:48 8743 1

原创 关于extern和static关键字的全面总结

(1)编译单元(模块)    在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作:第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件;第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件。    那么,错误可能在两个地方产生:一个,编译时的错误,这个主要是语法错误;一个,链接时的错误,主要是重复定义变量等。

2016-12-06 15:20:07 630

GPU计算高级优化技术精简手册

一步一步,由浅入深,CUDA进阶的好资源!

2015-09-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除