- 博客(85)
- 资源 (7)
- 收藏
- 关注
原创 Qt中 .pro 文件和 .pri 文件介绍
*.pro这是一个典型的Qt示例程序的.pro文件(propriprfprl.pro):TEMPLATE = appCONFIG += QTQT += core guiTARGET = propriprfprlSOURCES += main.cpp/ widget.cppHEADERS += widget.hFORMS += widget.ui
2015-01-14 12:00:42 24078 3
原创 vector的clear()和swap()比较
假设有若干对象存于一个 vector 中:class Widget;vectorWidget> vw;后来由于某些原因,从该容器中删除了若干对象(参考erase-remove idiom )。对于 vector 和 string 来讲, erase() 和 clear() 并不会改变容器的capacity,也就不会改变他们的内存占用。swap() 本意是用来交换两个容器
2015-01-03 20:21:17 3894
原创 关于C++输入输出笔记
关于涮新缓冲区:什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。为什么要引入缓冲区比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去
2015-01-02 22:18:26 755
转载 设置 VS2013 c++ 新建项目时默认为64位
也许你每次在VS新建工程的时候都希望能默认生成X64工程。但是每次新建工程的都是默认的win32.这时可以修改VS安装目录下:Microsoft Visual Studio 12.0\VC\VCWizards里面的三个文件:default.vcxproj、DefaultTest.vcxproj、vcupgradedefault.vcxproj用记事本打开,将Wi
2014-12-30 16:12:38 2620
原创 C++模板(类模板、函数模板)
1、在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?答:class用于定义类,在模板引入c++后,最初定义模板的方法为:template,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同class一样表明后面的符号为
2014-12-30 14:23:16 605
转载 在类模板的声明和定义中把.h与.cpp分离
1.声明部分// Tpl.h#pragma oncetemplateclass CTpl {public: CTpl(); virtual ~CTpl(); void Test(T t);};2.实现部分// Tpl.cpp#include "Tpl.h"templateCTpl::CT
2014-12-26 17:04:25 709
原创 套接字socket
套接字工作原理: 要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的
2014-12-23 19:29:32 728
原创 关于QT构造函数参数parent的解释
比如说我在头文件里定义了一个类class PaintWidget:public QWidget{public:PaintWidget(QWidget*parent=0)}然后在cpp中写PaintWidget::PaintWidget(QWidget*parent):QWidget(parent)意思是说,重定义父对象。如何重定义呢?看parent参数。当PaintW
2014-12-23 11:06:41 7591
转载 互联网TCP/IP五层模型(二)
转载自:阮一峰互联网协议入门(一)分析了互联网的总体构思,从下至上,每一层协议的设计思想。这是从设计者的角度看问题,今天我想切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。==============================================================互联网协议入门(二)作者:阮一峰(接
2014-12-16 23:03:01 955 1
转载 进程与线程的一个简单解释
转载自:阮一峰进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候
2014-12-16 22:13:45 493
转载 代码的抽象三原则
转载自:阮一峰软件开发是"抽象化"原则(Abstraction)的一种体现。所谓"抽象化",就是指从具体问题中,提取出具有共性的模式,再使用通用的解决方法加以处理。开发软件的时候,一方面,我们总是希望使用别人已经写好的代码,另一方面,又希望自己写的代码尽可能重用,以求减少工作量。要做到这两个目标,这需要"抽象化"。最近,我读到美国程序员Derick Bail
2014-12-16 20:41:59 700
转载 计算机是如何启动的?
转载自: 阮一峰从打开电源到开始操作,计算机的启动是一个非常复杂的过程。我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示...... 这几天,我查了一些资料,试图搞懂它。下面就是我整理的笔记。零、boot的含义先问一个问题,"启动"用英语怎么说?回答是boot。可是,boot原来的意思是靴子,"启动"与靴子有什么关系呢? 原
2014-12-16 19:30:29 478
转载 Stack的三种含义
转载自:阮一峰学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数据结构中,数据像积木那样
2014-12-16 16:46:47 798
原创 互联网TCP/IP五层模型(一)
转载自:阮一峰我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这
2014-12-16 16:20:19 5248 1
原创 编译原理
源码要运行,必须先转成二进制的机器码。这是编译器的任务。比如,下面这段源码(假定文件名叫做test.c)。#include stdio.h>int main(void){ fputs("Hello, world!\n", stdout); return 0;}要先用编译器处理一下,才能运行。$ gcc test.c$ ./a.outHe
2014-12-16 16:14:33 542
原创 友元函数和友元类声明举例
注: 友元是一种定义在类外部的普通函数或类,但它需要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend。友元不是成员函数,但是它可以访问类中的私有成员。所以,友元声明只能出现在类定义中。因为友元不是授权类的成员,所以它不受其所在类的声明区域public private 和protected 的影响。即友元函数的声明可以出现在类的任何地方class A{
2014-12-08 15:57:29 2535
转载 Qt5 中信号与槽的新写法
Qt4中最常用的信号槽写法:connect(obj1, SIGNAL(fun1(param1, param2,...)), obj2, SLOT(fun2(param1,...)));//编译后connect(obj1, "fun1(param1, param2,...)", obj2, "fun2(param1,...)");在程序编译阶段,程序会将函数以字符串的形式进行
2014-12-02 21:43:37 2002
转载 Qt学习:理解隐式共享
(1)深拷贝:即就是生成对象的一个完整的复制品;(2)浅拷贝:只是一个引用复制(比如仅仅复制指向共享数据的指针)。(3)隐式共享:也叫做回写复制(copy on write)。Qt中的很多C++类通过使用隐式数据共享来最大化资源的使用效率和最小化复制的资源耗费。将隐式共享类作为参数传递不仅安全而且效率高,因为在这个过程中只有指向这个数据的指针被传递,并且当且仅当有函
2014-12-02 09:59:45 5163 1
原创 C++中静态数据变量和静态函数(面向过程&&面向对象)
数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态 成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员 存在于内存,所以非静态成员可以直接访问类中静态的成员. 非成静态员:所有没有加Static的
2014-11-30 16:50:25 832 1
转载 Boot Loader && BIOS
原始出处 :http://yunli.blog.51cto.com/831344/181630在嵌入式系统当中你可能经常听到 boot loader(引导加载器)这一词,boot loader是指什么呢?在我们日常经常接触的东西中是不是有与boot loader的作用或是概念相似的呢?有一点我一定猜得到,你现在正在用计算机看这篇文章。如果你稍微熟悉计算机的组成,你一定知道BIOS(Basi
2014-11-30 13:55:21 1211
原创 C++中虚函数和纯虚函数的作用与区别-详解
虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public:virtual void Eat(){……};
2014-11-27 22:03:33 716
转载 C++中虚函数,结合例子解析,然后总结
虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。 例:基类与派生类中有同名函数。在下面的程序中Student是基类,Graduate是派生类,它们都有display这个同名的函数。#include #include using namespace std;//声明基类Studen
2014-11-27 21:17:39 641
转载 运算符重载之(),+
圆括号运算符也可以重载,重载之后对象就可以使用圆括号运算符了。使用圆括号运算符是不是很象函数?其实,圆括号运算符就叫函数调用运算符。下面是我刚刚写的一个例子,仅供参考。周末希望大家好好复习,咱们的时间很宝贵![code]#include using namespace std;class Time{ int hour; int minute;
2014-11-13 21:37:23 468
转载 成员函数重载运算符和友元函数重载运算符的比较
1.对双目运算符而言,成员函数重载运算符的函数参数表中只有一个参数,而用友元函数重载运算符函数参数表中含有两个参数。 对单木运算符来说,成员函数重载运算符的函数参数表中没有参数,而用友元函数重载运算符函数参数表中含有一个函数。这个问题要搞清楚,有一个this指针的问题。。。2.双目运算符一般可以用友元函数重载和成员函数重载,但有一种情况只可以用友元函数重载。 即:双目运算符左边的变
2014-11-13 10:26:58 6618
转载 Qt for Android 配置详细 (linux下的)
Qt for Android配置(Ubuntu11.04)一.环境搭建 1. Java 下载安装: ->jdk-6u25-linux-i586.bin url:http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html
2014-11-06 17:13:43 1407
转载 Qt for Android 配置详细 (Windows下的)
1.下载安装Qt 5.1.0 for Android (Windows 32-bit, 716 MB) http://qt-project.org/downloads2.打开Qt Creator,打开帮助,输入android,找到官方说明,按照教程一步步的操作。3.首先需要下载以下四个软件: 1)The Android SDK Tools 下载安装 2
2014-11-06 17:09:11 688 2
转载 C++ 编译和链接
最近,有同事向我多次问及C++关于编译链接方面的问题,包括如下:1:什么样的函数以及变量可以定义在头文件中2:extern "C"的作用3:防止重复包含的宏的作用4:函数之间是怎么链接起来的我认为,这些问题不难,书上基本上都有,但要是没有真正思考过,就凭死记硬背,也就是只能“嘴上说说”而已,遇到问题还真棘手,所以我觉得有必要说一下。C/C
2014-10-30 20:36:08 558
原创 C++ 声明与定义
下面列出一些应该或是不应该写入头文件的定义://test.h#ifndef TEST_H#define TEST_Hint a; //a有外部链接,不能在头文件中定义。extern int b=10;//同上。const int c=2;//c具有内部链接,可以定在头文件中但应该避免。static int d=3;//同上。static void func(){} //同
2014-10-30 20:16:17 452
转载 关于内敛函数
普通内联函数当我们定义了一个函数,编译器就会在内存中为其创建一个指令集,当我们调用这个函数时,程序就会跳转到该指令集处。当该函数运行完毕后,程序又会返回到原来执行调用该函数语句的下一行继续执行。假如对该函数执行了上百次调用,那么就要来回跳转上百次,这会严重影响到程序的执行效率。C++中,为解决这一问题,可以使用关键字inline声明函数。如:inline int func(
2014-10-30 19:11:44 740
转载 nth_element 用法简介
简单的说nth_element算法仅排序第nth个元素(从0开始的索引)如iarray [first,last) 元素区间排序后 iarray[nth] 就是第nth大的元素(从0开始)要注意的是[first,nth) [nth,last)内 的大小循序还不一定只能确定iarray[nth]是第nth大的元素。当然 [first,nth) 肯定是不大于 [
2014-10-21 21:37:54 3689
原创 图像处理中 BMP 和JPG等格式的说明
JPG也好,bmp也好,都是一种保存成文件的格式,而不是真正电脑处理的格式。JPG、BMP格式的图片电脑处理的就是DIB,设备无关位图,不管是什么格式,打开文件的时候就应该转换为DIB来处理了。其实,bmp格式就是直接保存的DIB格式
2014-09-27 11:06:05 3506
转载 图像特征提取之(二)LBP特征(理论知识)
LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由T. Ojala, M.Pietikäinen, 和D. Harwood 在1994年提出,用于纹理特征提取。而且,提取的特征是图像的局部的纹理特征; 1、LBP特征的描述 原始的LBP算子定义为在3*3的
2014-09-26 14:59:24 850
转载 Matlab与C++混合编程(依赖OpenCV)
Matlab与C++混合编程(依赖OpenCV)分类: OpenCV C/C++编程 图像处理2014-03-05 16:20 3682人阅读 评论(4) 收藏 举报Matlab与C++混合编程(依赖OpenCV)zouxy09@qq.comhttp://blog.csdn.net/zouxy09 之前在运行别人论文的代码的时候,经常有遇到Ma
2014-09-24 21:24:23 679
转载 堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两
2014-05-11 13:19:10 426
转载 C++ Primer 第八章 标准IO库
什么是缓冲区 缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。 为什么要引入缓冲区 比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据
2014-05-03 11:39:46 723
原创 关于----面向过程------面向对象----中 static成员
C++类中谈到static,我们可以在类中定义static成员,static成员函数!C++primer里面讲过:static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联!这句话可能比较拗口,其实可以这么理解:每个static数据成员可以看成是类的一个对象,而不与该类定义的对象有任何关系!下面我们就来具体
2014-04-27 15:20:36 532
转载 C++ 运算符重载
1. 运算符重载介绍之前的函数重载,允许多个同名不同参数类型的函数;运算符重载允许程序员如何使用运算符(如+、-、==、=和!)来处理不同类型的数据类型;对于基本数据类型,运算符是可以使用的:对于自定义数据类型:如果为对自定义MyString的运算符+定义,会出现编译错误。当一个运算符重载时,对于C++将会根据数据的类型,选择合适的重载运算符;C++中除
2014-04-27 10:12:02 601
原创 拷贝构造函数和赋值运算符重载
重点:包含动态分配成员的类 应提供拷贝构造函数,并重载"="赋值操作符。 以下讨论中将用到的例子: class CExample{public: CExample(){pBuffer=NULL; nSize=0;} ~CExample(){delete pBuffer;} void Init(int n){ pBuffer=new char
2014-04-26 21:19:46 590
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人