随笔分类 -  C/C++

句柄详解
摘要:1.什么是句柄句柄是windows用来标识应用程序实例使用的对象的唯一整数。类似C语言中的文件句柄。 句柄的本质是一种指向指针的指针。应用程序启动后,组成这个程序的各对象是驻留在内存的。那是否我们获知了这个内存的首地址,就可以随时用这个地址访问对象呢?答案是否定的,因为windows是一个以虚拟内存 阅读全文

posted @ 2017-03-11 20:07 迪米特 阅读(1316) 评论(0) 推荐(0) 编辑

指针函数和函数指针的区别
摘要:1.指针函数指针函数是一个函数,函数的返回值是一个指针。格式如下: myfunc即为一个指针函数。 代码示例如下:pfunc.c 输出结果: 2.函数指针函数指针是一个指针,它指向函数地址格式如下: myfuncp是一个指针,*myfuncp为指针指向的函数的地址。 我们有以下函数double my 阅读全文

posted @ 2016-07-08 00:19 迪米特 阅读(1218) 评论(0) 推荐(0) 编辑

Linux静态库和共享库
摘要:1.什么是静态库静态库类似windows中的静态lib 关于windows中的静态lib,可参考 Windows动态链接库DLL 特点:包含函数代码声明和实现,链接后所有代码都嵌入到宿主程序中。 只在编译时使用,执行时不再需要该静态库。 2.静态库编写示例如下:addvec.c multvec.c 阅读全文

posted @ 2016-06-22 18:07 迪米特 阅读(346) 评论(0) 推荐(0) 编辑

Windows动态链接库DLL
摘要:1.什么是DLLDLL,即动态链接库,是包含若干个函数的库文件,可供其他程序运行时调用。 2.DLL的优缺点优点:代码重用,可供多个程序同时调用 缺点:易发生版本冲突当新版本的动态链接库不兼容旧版本时,其他使用该DLL的程序可能无法正常工作。针对这一问题,我们需要在程序中加上一个manifest文件 阅读全文

posted @ 2016-06-22 14:08 迪米特 阅读(3650) 评论(0) 推荐(0) 编辑

C++泛型编程原理
摘要:1.什么是泛型编程前面我们介绍的vector,list,map都是一种数据结构容器,容器本身的存储结构不同,各容器中存在的数据类型也可以不同。但我们在访问这些容器中数据时,拥有相同的方式。这种方式就叫做“泛型编程”,顾名思义,不同的类型采用相同的方式来操作。 2.泛型编程的原理。我们先看下面的两个分 阅读全文

posted @ 2016-06-17 11:09 迪米特 阅读(6051) 评论(0) 推荐(0) 编辑

C++ typedef详解
摘要:1.typedef的用途1)定义一种类型的别名注意typedef并不是简单的宏替换,如下例所示: 再看以下示例: 可以看出,typedef char* PCHAR;之后,PCHAR是char*类型的别名,PCHAR pa,pb;将pa,pb都定义成char*类型。 2)定义struct结构体别名我们 阅读全文

posted @ 2016-06-16 18:30 迪米特 阅读(6899) 评论(0) 推荐(0) 编辑

C++ map详解
摘要:1.什么是mapmap是一个键值对容器。在处理一对一数据是,很有用。 2.map数据结构的特点map内部自建一颗红黑树,这棵树具有对数据自动排序的功能,因此,map内的数据都是按key的值排好序的。 3.map数据插入数据的插入有三种方法:第一种,调用insert函数,插入pair类型数据示例如下所 阅读全文

posted @ 2016-06-15 18:41 迪米特 阅读(9573) 评论(0) 推荐(0) 编辑

C++ vector和list的区别
摘要:1.vector数据结构vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。 阅读全文

posted @ 2016-06-15 15:39 迪米特 阅读(76407) 评论(0) 推荐(8) 编辑

C++静态存储,动态存储
摘要:什么是静态存储,动态存储静态存储变量通常是在变量定义时就分定存储单元并一直保持不变, 直至整个程序结束。 动态存储变量是在程序执行过程中,使用它时才分配存储单元, 使用完毕立即释放。典型的例子是函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放。 阅读全文

posted @ 2016-06-15 11:10 迪米特 阅读(1900) 评论(0) 推荐(0) 编辑

C++文件输入和输出
摘要:1.引入头文件fstreamfstream头文件定义了用于文件输入的类ifstream和文件输出的类ofstream 2.写文件1)创建一个ofstream对象来管理输出流2)将该对象与文件关联起来3)使用cout方式使用该对象,唯一区别是输出将进入文件,而不是屏幕。4)关闭到文件的连接示例如下: 阅读全文

posted @ 2016-06-13 13:55 迪米特 阅读(29866) 评论(1) 推荐(1) 编辑

C/C++数组名与指针的区别详解
摘要:1.数组名不是指针我们看下面的示例: 输出结果:104由输出结果可知,数组名并不是指针。 2.数组名神似指针上例我们证明了数组名不是指针,但第5行,char *pStr = str; 程序将数组名直接赋给指针,这显得数组名又的确是个指针!我们还可以发现数组名显得像指针的例子: 标准C库函数strcp 阅读全文

posted @ 2016-06-12 15:25 迪米特 阅读(484) 评论(0) 推荐(1) 编辑

C++运算符重载详解
摘要:1.什么是运算符重载 运算符重载是一种函数重载。 运算符函数的格式:operatorop(argument-list)例如,operator+()重载+运算符。其中的op,必须是有效的C++运算符,如operator@()会报错,因为C++中没有@运算符。 2.重载运算符的使用 如下例所示: 调用运 阅读全文

posted @ 2016-06-12 11:12 迪米特 阅读(527) 评论(0) 推荐(0) 编辑

C++ const使用详解
摘要:1.const常量和宏常量const int max=100;#define max 100;const常量相对宏常量有两个有点:1)有类型安全检查2)占用内存空间少 2.const变量在内存中的位置我们在C程序的内存布局中,已经通过示例进行了说明 3.const常成员变量的初始化在某个对象生存期内 阅读全文

posted @ 2016-06-08 14:28 迪米特 阅读(1256) 评论(1) 推荐(0) 编辑

C++多继承
摘要:1.继承的三种方式: 公有继承(public),私有继承(private),保护继承(protected)三种继承方式的说明,如下表所示: 2.什么是多继承 一个类有多个基类,那么这种继承关系就叫做多继承。比如有两个类,服务员类Waiter,歌手类Singer,我们有一个类既是服务员,又是歌手,那么 阅读全文

posted @ 2016-06-06 18:56 迪米特 阅读(4777) 评论(0) 推荐(0) 编辑

C++抽象类
摘要:1.为什么要有抽象类 我们举一个例子,程序有两个类,椭圆Ellipse类,圆Circle类。我们知道椭圆是包括圆的,那么我们可以使用继承: 然而,我们在定义各自的成员变量和成员函数时,发现两个类的成员有很大的不同,比如Ellipse类需要长短轴半径,中心坐标,方向角才能确定位置,另外还包括移动椭圆, 阅读全文

posted @ 2016-06-05 23:52 迪米特 阅读(2205) 评论(0) 推荐(0) 编辑

C++重载,重写,重定义
摘要:1.重载:重载是在一个类中,函数名一样,参数类型或参数个数不同的一系列函数需要注意的是,与返回类型无关。 2.重写我们比较熟悉的另一个词是“覆盖”用在继承中,子类若没有重新定义父类的虚方法,则子类对象调用该方法时,使用的仍是父类的方法;否则,子类覆盖了父类的虚方法,调用时使用的是重新定义的方法。 输 阅读全文

posted @ 2016-06-05 03:59 迪米特 阅读(372) 评论(0) 推荐(0) 编辑

C++虚函数表与虚析构函数
摘要:1.静态联编和动态联编联编:将源代码中的函数调用解释为要执行函数代码。静态联编:编译时能确定唯一函数。在C中,每个函数名都能确定唯一的函数代码。在C++中,因为有函数重载,编译器须根据函数名,参数才能确定唯一的函数代码。动态联编:编译时不能确定调用的函数代码,运行时才能。C++中因为多态的存在,有时 阅读全文

posted @ 2016-06-05 01:23 迪米特 阅读(5815) 评论(0) 推荐(0) 编辑

C++ 初始化列表
摘要:1.初始化列表的写法 初始化列表,写在类的构造函数后面,以冒号开头,后跟一系列用逗号分隔的初始化字段。如下列所示: class Person { public: Person(std::string s, int i):name(s), age(i) { std::cout<<"Person(std 阅读全文

posted @ 2016-06-01 18:11 迪米特 阅读(354) 评论(0) 推荐(0) 编辑

C++类的构造函数详解
摘要:1.默认构造函数1) 当没有定义任何构造函数时,编译器会提供默认构造函数,可以直接使用。2) 如果定义了带参数的构造函数,又需要使用默认构造函数,此时,必须显式定义无参构造函数,这和C#中有很大的不同。例如有一个蔬菜类Veg:Veg(const char* name,int num,double p 阅读全文

posted @ 2016-05-31 15:30 迪米特 阅读(2735) 评论(0) 推荐(0) 编辑

C++异常详解
摘要:1.对异常的几种处理方式1)调用abort()abort()函数的原型位于头文件cstlib中,其实现是向标准错误流发送abnormal program termination(程序异常终止),然后终止程序。示例如下: 2)返回错误码使用一个bool值来标记,运行结果是成功,还是失败。示例如下: 3 阅读全文

posted @ 2016-05-30 17:41 迪米特 阅读(422) 评论(0) 推荐(0) 编辑

导航