C++
如雪残阳
云淡风轻近午天
展开
-
C++学习方式方法
很多人认为C++牛B,学好了可以无敌于天下,我只想说:别天真了,没有一种说法,学习好一种语言就就可以笑傲江湖了,如果这样,为什么大家都不跑来学习C++呢。C++只是一个复杂一点的语言,请大家别神话它。学习C++,为什么有很多C++大牛,有各自不同的学习方式,这个人这么学,代码这么写,那个人那么学,代码那样写,到底谁的正确的?我告诉你:没有谁对谁错,因为他们的工作、学习、方向、环境造就了他们的学原创 2013-05-14 10:17:44 · 1333 阅读 · 4 评论 -
C++的宏
原创 2013-07-31 13:39:48 · 527 阅读 · 0 评论 -
在模板类中用函数指针的方式访问其它模板类中的模板函数
#include using namespace std;class CA{public: int Sum(int a, int b) { return a+b; }};class CB{public: float Sum(float a, float b) { ret原创 2013-07-31 17:26:40 · 578 阅读 · 0 评论 -
函数后面带有EX或者EXA等字样的含义
有些API后面会带有A或WA是ANSI 版本W呢则是UNICODE版本这和编码所采用的字符集(Character Set)有关系所以我们看到API一般都有这样的宏定义#ifdef UNICODE#define CreateProcess CreateProcessW#else#define CreateProcess CreateProcessA#endif // !UNIC原创 2013-08-23 15:42:48 · 3031 阅读 · 0 评论 -
OPENCV椒盐噪声过滤
有时候我们需要对图像进行椒盐噪声过滤,但是opencv并没有椒盐噪声过滤的函数。下面我自己写的一个简单的椒盐噪声过滤函数,适合于二值化后出现的椒盐噪声过滤,opencv版本:2.3.1 IDE:vs2010 语言:C++。/***@brief 随机噪声点过滤*@param src 预处理图片*@param w 预处理噪声点像素宽*@param h 预处理噪声点原创 2013-08-15 14:24:04 · 2225 阅读 · 0 评论 -
Visual Studio最常用、最高效的快捷键
在编程的时候,记忆一些常用的快捷键,不仅能够使我们的编程更有效率,有时候还能做到一些手工做不了的事情。工具/原料 VS2013(VS2012、VS2010)。方法/步骤 1强迫智能感知:Ctrl+J。智能感知是Visual Studio最大的亮点之一,选择Visual Studio恐怕不会没有这个原因。转载 2013-10-21 09:40:33 · 4064 阅读 · 0 评论 -
Socket send函数和recv函数详解
send函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;转载 2013-12-11 15:37:03 · 598 阅读 · 0 评论 -
VS2010中如何进行单元测试
单元测试,每个程序员都会测试的。编写一个模块,都会进行程序的单元测试。以前公司开发工具都是vs2005,2008。都是下载个Nunitl来做单元测试,现在新用的vs2010有自带的单元测试功能。那么下面按照详细的步骤开始介绍。VS2010中如何进行单元测试VS中的测试工具可以对任何类、接口、结构等实体中的字段、属性、构造函数、方法等进行单元测试。单元测试分两种:整体测试和单独测试。转载 2013-12-13 11:57:43 · 2088 阅读 · 0 评论 -
C++中的空类,编译器默认可以产生哪些成员函数
一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,如果你写 class Empty{}; 就相当于: class Empty { public: Empty(); Empty(const Empty&); ~Empty(); Empty& operator=(const Empty& rh转载 2013-12-17 18:52:42 · 594 阅读 · 0 评论 -
c++空类所占内存大小问题
先看一个例子#includeusing namespace std;class a {};class b{};class e{public:void func1();virtual void func2();private:static int n;int m;};class c:public a{virtual void fun()=0;转载 2013-12-27 15:49:13 · 3849 阅读 · 2 评论 -
WaitForSingleObject 和 WaitForMultipleObjects函数
WaitForSingleObject 和WaitForMultipleObjects:1.WaitForSingleObject 等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。这些等待函数中最常用的是WaitForSingleObject: DWORDWaitForSingleObject(HANDLE hObject, DWORD dwMillise转载 2014-01-15 10:31:06 · 698 阅读 · 0 评论 -
类中的静态变量和函数
类中的静态成员变量和函数,在类定义时就有了它自己的内存区域。1:静态成员函数不能调用非静态成员变量和函数。2:类中声明了静态成员变量,使用前必须初始化,否则没有分配内存区域,不能使用。3:所有类的对象共享静态成员变量的地址。原创 2013-07-03 11:29:11 · 671 阅读 · 0 评论 -
阻塞与非阻塞
void main(){ while(true) { //干一些事情 sleep(1000); }}//这是阻塞非阻塞就是把while部分放到一个单独的线程里去处理原创 2013-07-02 10:22:55 · 354 阅读 · 0 评论 -
回调函数浅谈
转载自:http://www.cnblogs.com/this-543273659/archive/2011/07/20/2111815.html对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 什么是回调函数? 简而言之,回调函数就是一转载 2013-04-18 11:51:45 · 859 阅读 · 0 评论 -
C++的string转换成int
对于C++的各种相互转换,很多人很是头疼,包括我也是。下面提供一个非常好的转换方法,如下:在C++标准库里面,使用stringstream:(stringstream 可以用于各种数据类型之间的转换)#include <sstream>#include <string>std::string text = "152";int number;std::...原创 2013-04-15 15:57:00 · 1239 阅读 · 0 评论 -
模板元编程简介2
2:求解一个数的乘方。当然这个可以利用cmath头文件中pow函数来完成,但对于次数较小的常整数的乘方运算来说,这种办法的效率较低,不如手工写一个操作数连乘的表达式,但有时候这样并不方便,特别当乘方运算的底数本身是一个较为复杂的表达式时,一般还要先用临时变量将表达式保存,再对临时变量做乘方。通过定义一个如下的内联函数可以提供一些方便。inline double power(doub原创 2013-04-15 11:56:50 · 632 阅读 · 0 评论 -
模板元编程简介
模板是C++一个非常灵活的语言特性,其中模板有一些非常奇特的用法,其中最为奇特的一种用法就是模板元编程。模板元编程是指在模板实例化的同时利用编译器去完成一些计算任务。通过模板元编程,可以把一些需要在运行时计算的任务放到编译时来做,从而提高程序的运行时效率。 介绍两个例子,简单介绍模板元编程。 1:写程序时,通常需要定义一些常量,静态数组的大小常常由常量决定——或者是一个常量...原创 2013-04-15 11:16:26 · 965 阅读 · 0 评论 -
类模板的特化和偏特化
模板的特化是指对特定的类型,进行特定的实现。// general versiontemplate<class T>class Compare{public: static bool IsEqual(const T& lh, const T& rh) { return lh == rh; }};// specia...原创 2013-04-15 10:56:31 · 749 阅读 · 1 评论 -
C++模板声明和实现为什么不能分开来写
C++规定,模板是按需实例化的。这决定了函数模板、类模板成员函数和类模板静态数据成员不能像普通函数、普通类的成员函数和普通类的静态数据成员那样把定义放在源文件中,声明放在头文件中。假如把模板分开来写,当编译器编译实现文件时,因为是模板,根据按需实例化原则,此时不会产生任何实例化类,也不会生成任何函数代码,当别的文件中调用该模板时,只能调用模板的声明文件,而实现文件,全部为空。原创 2013-04-15 10:40:00 · 1927 阅读 · 0 评论 -
C++模板参数是否显示指定
编译器不会为函数模板生成目标代码,在调用一个函数模板时,虽然用的是模板名,但实际上被调用的并不是抽象的函数模板,而是由函数模板生成的实例函数。例:int a;outputArray(a, A_COUNT);这里虽然没有明确的给出模板参数,但实际上被调用的是函数模板的实例outputArray<int>,之所以不需要像引用类模板实例时那样明确的指定函数模板参数,是因为编译...原创 2013-04-15 10:29:54 · 1194 阅读 · 0 评论 -
cout设置输出精度
#include #include using namespace std;int main () { double f =3.14159; cout << setprecision (5) << f << endl; cout << setprecision (9) << f << endl; cout << fixed; cout << setprecision (原创 2013-06-26 10:30:02 · 1414 阅读 · 0 评论 -
C RunTime Library和C++ RunTimeLibaray详解(CRT)
crt是系统运行的基础,包含了c常用的函数集,为运行main做了初始化环境变量、堆、io等资源,并在结束后清理。Windows环境下,VC提供的 C run-time library又分为动态运行时库和静态运行时库。动态运行时库主要是DLL库文件msvcrt.dll(or MSVCRTD.DLL for debug build),对应的Import library文件是MSVCRT.LIB转载 2013-07-15 11:16:48 · 1340 阅读 · 0 评论 -
CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别
CreateThread是Windows的API函数(SDK函数的标准形式,直截了当的创建方式,任何场合都可以使用),提供操作系统级别的创建线程的操作,且仅限于工作者线程。不调用MFC和RTL的函数时,可以用CreateThread,其它情况不要轻易。在使用的过程中要考虑到进程的同步与互斥的关系(防止死锁)。线程函数定义为:DWORD WINAPI _yourThreadFun(LPVOID pP转载 2013-07-15 11:21:08 · 559 阅读 · 0 评论 -
CBitmap从硬盘加载bmp图片和png图片的函数
需要用到GDIPlus1、png的显示1)可以用把png转换成CBitmap进行显示,应该会丢失透明度信息,如下:Gdiplus::Color colorW(255, 255, 255, 255);HBITMAP hbmReturn = NULL; Gdiplus::Bitmap image( wsPath.c_str() );image.GetHBITMAP( color原创 2014-02-15 10:08:01 · 3071 阅读 · 0 评论