- 博客(7)
- 资源 (9)
- 收藏
- 关注
原创 类对象切割对虚函数调用的影响
背景现在有CFish和CAnimal两个类,并且CFish类继承于CAnimal类,它们都有breath这样的接口,只是表现形式不同,所以用虚函数来定义,类关系如下图所示; 图一 类图关系其代码实现如下://基类class CAnimal{public: CAnimal() { //构造函数 cout << "CAnimal Const
2017-06-18 18:16:38 437
转载 显示调用析构函数潜在隐患分析
1. 显式调用的时候,析构函数相当于的一个普通的成员函数 2. 系统隐式调用析构函数的时候,会同时释放栈内存和堆内存(如果用户申请了堆内存),容易导致内存重复释放; 3. 用户显式调用析构函数的时候,只是单纯执行析构函数内的语句,不会释放栈内存,摧毁对象; 例子1class aaa{public: aaa(){} ~aaa(){cout<<"deconstructor"<<
2017-06-18 15:03:50 505
原创 PeekMessage和GetMessage函数的主要区别
经网络资料查找以及MSDN资源查找,整合出PeekMessage函数和GetMessage函数的主要区别,内容比较全,也有应用代码说明。联系:在Windows的内部,GetMessage和PeekMessage执行着相同的代码,Peekmessage和Getmessage都是向系统的消息队列中取得消息,并将其放置在指定的结构。区别:PeekMessage: 有消息时返回TRUE,没有消息返回FAL
2017-06-17 18:02:52 1781
原创 C++ 模板的编译与链接
模板是C++泛型编程的基础,一个模板就是一个创建类或者函数的公式;在具体使用时,我们需要将模板参数转化为具体类型,比如int,float,Vector以及自定义类型;这种转换过程发生在编译阶段。定义模板假如我们需要完成一个数值幂次方函数的功能,这个数组可以是int,也可以是float;我们的函数分别如下:整型值的幂次函数:int Power(int base, int index){ if
2017-06-07 20:33:05 7662 2
原创 C++对象的生成和消亡时刻分析
对于不同性质的C++对象的生成和消亡时间是不同,比如全局对象、静态对象、局部对象等;1. 对于全局对象,C++规定 全局对象的构建将比程序进入点(main函数,WinMain函数)更早,全局类对象的构造函数都是在main函数之前完成调用的;2. 对于静态数据成员和普通类型全局变量,如果没有设置默认值,其初始值为0,或者空,测试结果如下:class CPerson{publi
2017-06-04 17:14:22 2272
转载 CreateThread 和_beginthreadex区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex? 使用多线程其实是非常容易的,下面这个程序的主线程会创建了
2017-06-04 15:00:55 791
转载 面向对象的三个基本特征
面向对象的三个基本特征是:封装、继承、多态。 封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的
2017-06-04 11:16:12 464
C/C++/JAVA/Python代码统计工具
2018-12-17
基于boost.asio库的C++http/https web server
2018-07-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人