c++学习
danelumax2
这个作者很懒,什么都没留下…
展开
-
重载与多态的区别
重载,是指允许存在多个同名方法,而这些方法的参数不同。重载的实现是:编译器根据方法不同的参数表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期就绑定了。重载就像是有多种含义的动词。例如Rose小姐可以在棒球场为家乡球队助威(root),也可以在地里种植(root)花草。根据上下文可以知道在每一种情况下,root的含义是什么。多态:是指子类重新定原创 2013-01-28 21:13:25 · 401 阅读 · 0 评论 -
Linux和DOS常用命令对照表
以下内容为Linux和DOS常用命令对照表,对于熟悉Dos的朋友来说,了解常用对应的Linux命令是有必要的,特别是有时候会把dos命令与 Linux命令弄混淆,下面给出的对照表希望对大家有所帮助,这里列举出了常用的18种Linux与dos命令对照表,让你能轻松的上手。如果你想要更加全面的了解Linux的各种命令,请查看风信网提供的以下特别专题内容:Linux常用命令大全达人总原创 2013-06-17 09:46:43 · 1464 阅读 · 0 评论 -
回调函数 参数传递
回调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等等之类的。但是什么时候被调用却不知道了。回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的形式传递参数。所以很多人打比方,说回调函数还真有点像您随身带的B原创 2013-11-30 02:18:19 · 3284 阅读 · 1 评论 -
/t转义字符的一个特性
\t 是8位但是你要明白它不是对于前一个字符来说的8位,而是对面板来说的printf("a\tb\n");|a| | | | | | | |b|printf("as\tb\n");|a|s| | | | | | |b| printf("asdfghj\tb\n");|a|s|d|f|g|h|j| |b| printf("asdfghjk\tb\n");|a|s|d|f原创 2014-01-02 10:01:58 · 2881 阅读 · 1 评论 -
Windows C++迁移Linux C++问题集锦
1)‘_wcsicmp’在此作用域中尚未声明#ifdef WIN32#define _tcsicmp _wcsicmp#else#define _tcsicmp wcscasecmp#endif2)_stricmp 在此作用域中尚未声明#include 将_stricmp改成strcasecmp3)原创 2014-03-19 16:22:04 · 1091 阅读 · 0 评论 -
成员对象
成员对象:当一个类的成员是另一个类的对象时,这个对象就叫成员对象。概括的说,就是一个类的成员是一个对象,即成员对象。例如:#includeusing namespace std;class Date{ ...}; //创建一个对象Date,类体略class Time{ Date d1 , d2;}; //创建一个对象Time,该对象有两个数据成员d1和d2,这两个成员原创 2014-04-20 08:57:01 · 986 阅读 · 0 评论 -
内存泄漏原因
程序中的内存泄漏主要有: 1. 用new,malloc,GolbalAlloc等函数分配的堆内存没有用delete,free,GlobalFree等释放,这些内存在Debug时候都可以Dump出信息的,但只有new在Debug的时候会正确指出出错的行,因为在Debug版本中VC对new进行了重定义,建议大家分配内存时尽量使用new 2. 在绘图时创建的GDI对象没有释放,但如果你是原创 2014-07-17 20:50:02 · 635 阅读 · 0 评论 -
C++知识梳理
一、new、delete、malloc、free关系1. 都是在堆上进行内存操作2. new和delete能动态申请和释放内存3. new和delete能调用构造和析构函数4. malloc指定内存分配的字节数5. new是强制类型,malloc不是,需要类型转换6. malloc和free是库函数,new和del原创 2014-05-27 18:51:27 · 597 阅读 · 0 评论 -
动态链接库和静态链接库的区别
静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生转载 2014-11-12 10:38:50 · 498 阅读 · 0 评论 -
HeadFirst设计模式学习笔记1-策略模式
策略模式(Strategy Pattern):定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。引子:从代码复用的角度来说,使用继承并不是一个很理想的方法,因为如果你改变父类的行为,将影响所有的子类的行为。使用接口也不能解决问题,因为接口无法实现代码复用(有些语言的接口中不具有实现代码),必须要在每个实现接口的类中实现接口中的功能。第一个设计原则:转载 2015-06-12 16:37:05 · 662 阅读 · 0 评论 -
VS2010怎么添加库文件
H文件目录:依次点击“项目——配置属性——C/C++——常规”,在“附加包含目录”中加入H文件所在的文件夹 LIB目录: 依次点击“项目——配置属性——链接器——常规”,在“附加库目录”中加入LIB所在目录 还没完,在“链接器”中找到“输入”,在“附加依赖项”中加入lua51.lib或用#pragma comment(原创 2013-05-06 17:43:41 · 679 阅读 · 0 评论 -
MultiByteToWideChar和WideCharToMultiByte用法详解
1.使用方法详解 在本文开始之处,先简要地说一下何为短字符和宽字符. 所谓的短字符,就是用8bit来表示的字符,典型的应用是ASCII码.而宽字符,顾名思义,就是用16bit表示的字符,典型的有UNICODE.关于windows下的ASCII和UNICODE的更多信息,可以参考这两本经典著作:《windows 程序设计》,《windows 核心编程》.这两本书关于这两种字符都有比较原创 2013-03-18 09:09:41 · 484 阅读 · 0 评论 -
char路径连接
固定路径+变量,再组成新的char类型路径const char *fileName="BMP\\";char* name=new char[20];sprintf(name,"%s%d",fileName,ix);原创 2013-03-18 10:10:18 · 1134 阅读 · 0 评论 -
struct和typedef struct
1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里原创 2013-02-02 20:18:54 · 274 阅读 · 0 评论 -
BITMAP结构体
BITMAP的定义typedef struct tagBITMAP{LONG bmType; //位图类型,必须为0LONG bmWidth; //位图宽度LONG bmHeight; //位图高度LONG bmWidthBytes; //每一行像素所在的byte数WORD bmPlanes; //颜色平面数WORD bmBitsPixel;原创 2013-03-05 18:51:15 · 3084 阅读 · 0 评论 -
main(int argc,char *argv[])使用
main(int argc,char *argv[])argc表示文件运行时 以空格为间隔的所有参数个数,argv[]数组中依次存放所有字串比如:该程序保存编译后名叫做 test.exe在DOS环境中运行是输入如下路径/test one two threeargc=3,从0-3,argv[0]=test, argv[1]=one, argv[2]=two,argv[3]=three原创 2013-02-26 13:40:00 · 343 阅读 · 0 评论 -
extern "C"解释
extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。 被extern "C"限定的函数或变量是extern类型的; extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下原创 2013-02-27 14:55:54 · 222 阅读 · 0 评论 -
const 修饰
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。 const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书原创 2013-02-28 15:22:37 · 321 阅读 · 0 评论 -
srand( time(NULL) )
函数原型: time_t time(time_t *timer) 函数功能: 得到机器的日历时间或者设置日历时间 函数返回: 机器日历时间 参数说明: timer=NULL时得到机器日历时间,timer=时间数值时,用于设置日历时间,time_t是一个long类型NULL作为获取时间的标志srand函数是随机数发生器的初始化函数。 原型:vo原创 2013-02-28 14:26:38 · 1899 阅读 · 0 评论 -
两张YUV数据如何叠加
YUV数据怎么叠加------解决方案--------------------------------------------------------平面格式对Y,U,V分别叠加,打包格式直接叠加。 ------解决方案--------------------------------------------------------直接copy就行 ------解决方案-原创 2013-03-14 13:57:34 · 4501 阅读 · 0 评论 -
缺少“;”(在“类型”的前面)的解决方案
C语言编程中在for(int i=0;iC语言的标准规定标量要在函数开始的时候定义或者声明。在C语言里,最好把所有的变量声明放到计算之前,先声明再使用,这样就不会有这类错误了改为:int i;for(i=0;i原创 2013-03-15 11:46:05 · 1956 阅读 · 0 评论 -
string 转const char *方法
很多函数都涉及到文件路径,但是他们需要const char *类型,下面总结了两个方法,很给力哦!方法一用string.c_str()是将string类型的转换为const char *类型方法二const_cast1. string转const char* string s = "abc"; const char* c_s = s.c_str();2. const c原创 2013-03-18 08:22:11 · 6047 阅读 · 0 评论 -
Linux C++ 线程池
在平时项目中我们经常需要多线程编程,提高系统的CPU利用率,但是如果需要用多线程处理类似轻量级、频率高的任务,因为创建一个线程或者删除一个线程是需要开销的;如果线程数量过大的话,cpu就会浪费很大的精力做线程切换,和创建、删除线程,甚至在系统开销中占很大的一部分,反而会大大降低系统的性能,碰到这种问题怎么办? 线程池流程图 来源:朱翔[点击放大]自然而然,我们想转载 2015-09-30 22:13:27 · 836 阅读 · 0 评论