C++
HappyerMano
这个作者很懒,什么都没留下…
展开
-
几种c++常见的类型转换
C++ 详解几种类型转换首先我们要先了解一下C语言风格的类型转换,一般我们会用(T)expression或是T(expression)进行C语言的类型转换,然后 这种类型转换,会不分青红皂白的进行转换,ANSI C++定义了四种新类型的转换符号,分别是reinterpret_cast, static_cast, dynamic_cast和const_cast,旨在于控制类(class)之间的类型原创 2016-09-13 22:55:38 · 472 阅读 · 1 评论 -
观察者模式及如何通过消息机制(观察者模式)实现模块间解耦
1、讲一下什么是观察者模式什么是观察者模式呢,观察者模式又叫做订阅发布模式,类似这样的例子生活里随处可见,比如公众号,比如微博关注的功能,这都是订阅发布模式,我们对一个公众号感兴趣,就会去关注一个公众号,这个公众号有了什么新的文章,新的内容,就会推送给所有关注了这个公众号的微信号,如果某一天我们对这个公众号不再感兴趣,我们就可以取消对它的关注,后面这个公众号再有什么新的内容,也不会再推送给我们...原创 2018-03-06 11:27:35 · 1189 阅读 · 0 评论 -
单一职责原则和开放封闭原则
单一职责原则:所谓单一职责原则,简单点说就是,每个类,每个方法最好是只做一件事情,只具备一个功能。这样做有什么好处呢,举个简单的例子。A方法具有两个功能,一个功能是计算N个数的平均数,另一个功能是睡眠10秒钟,那这个时候,我的B方法需要一个功能,就是计算平均数,但B方法又不想在计算了以后去睡眠10秒钟,那这个时候B方法就没办法使用现成的A方法进行计算。现在有什么办法可以解决这个问题呢。原创 2018-01-31 11:51:45 · 803 阅读 · 0 评论 -
多线程中join和detach方法的理解
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。原创 2017-12-25 17:27:43 · 9209 阅读 · 0 评论 -
消息机制简单实现模块间解耦
消息机制一直是软件开发中减少模块之间耦合的标准方式,下面我们举一个简单的例子,看看是如何通过消息,减少类 A 和类 B之间的耦合度的。下面是传统的方法,实现 A 对 B 类的某个方法的调用,不使用消息机制的传统方法,A 需要持有 B 的对象,并且 A 要知道所要调用的B的方法,这样 A 和 B 就强耦合在了一起,一旦 B 类发生变化,A 类就可能要重新编译,而且如果 doSomethingBSpec原创 2017-10-26 17:22:20 · 3441 阅读 · 1 评论 -
vector iterator not incrementable
情况1:int _tmain(int argc, _TCHAR* argv[]){ std::vector<int> aa = { 123, 1, 2, 44, 122, 87 }; for (const auto &child : aa) { std::cout << child << std::endl; aa.push_back(112原创 2017-10-24 18:26:33 · 533 阅读 · 0 评论 -
new(std::nothrow) 和 new() 的区别
源码方面的信息就不详细讲述了,找找代码看看便知,简要说明下: new(std::nothrow) 顾名思义,即不抛出异常,当new一个对象失败时,默认设置该对象为NULL,这样可以方便的通过if(p == NULL) 来判断new操作是否成功 普通的new操作,如果分配内存失败则会抛出异常,虽然后面一般也会写上if(p == NULL) 但是实际上是自欺欺人,因为如果分配成功,p肯定不为NULL转载 2017-09-14 10:03:25 · 3254 阅读 · 0 评论 -
读《重构-改善既有代码的设计》的一些简单的概念和理解
重构(名词):对软件内部结构的一种调整,目的是不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。重构(动词):使用一些列重构手法,在不改变软件可观察行为的前提下,调整其结构。重构的节奏一般是这样的:小改动,测试,小改动,测试,小改动,测试…重构技术就是以微笑的步伐修改程序。如果你犯下错误,很容易便可发现它。去掉某些临时变量控制类的变化造成尽量小的影响是什么让程序变得如此难以修原创 2017-08-17 11:07:27 · 1043 阅读 · 0 评论 -
程序员的自我修养(编译和链接)
原文链接:http://www.cnblogs.com/Tan-sir/p/7280776.html转载 2017-08-07 17:37:29 · 475 阅读 · 0 评论 -
浅谈C++指针类型的转换
首先我们来看一下下面这段代码,类C多重继承自类A和类B,观察程序运行后打印的结果我们会发现 (A*)c 和 (B*)c 的值不同,为什么做了一次强转之后的值会不一样呢?#include "stdafx.h"#include <iostream>using namespace std;class A{public: virtual void DrinkSomething(){};pr原创 2017-06-15 11:29:39 · 2243 阅读 · 0 评论 -
H5网页版贪吃蛇源代码
H5网页版贪吃蛇源代码,新建文本文档,将下面的代码复制粘贴到文本文档,然后保存文件。重命名文件及后缀名为index.html。将文章最下面的两个图片保存下来,蓝色背景大图重命名为back.jpg,骷髅头的命名为pirate.png。在index.html同级目录下新建一个文件夹叫做image,然后将两张背景图放入image文件夹。现在index.html就可以正常运行了,双击就可以运行。原创 2017-06-15 16:25:27 · 15768 阅读 · 10 评论 -
linux 下的 .a 文件 .o 文件 是什么文件?各有什么作用?
.o 就是object, 也就相当于windows下编译的obj文件, 俗称目标文件. .a 就是archive, 也就相当于windows的VC下编译的lib文件, 俗称静态库文件..o文件是链接文件,.a是静态库文件,靠.o文件生成,作为一个库为外部程序提供函数,接口。 生成.o文件: gcc -c test.o test.c 生成.a文件: ar cqs test.a te转载 2017-06-30 11:09:44 · 25099 阅读 · 0 评论 -
cocos2dx游戏性能优化之对象池
cocos2dx游戏性能优化之对象池对象池机制:可回收与重复使用手机游戏的性能对于一款手机游戏来说,那是相当的重要了,我们常说的性能呢,一般包括耗电,发热情况,流畅度,是否存在卡帧等等。从专业的角度来说,包括FPS帧数,手速侦测,CPU和内存占用率等等。那我们今天就来说一下如何通过使用对象池的机制,有效的提高内存和计算效率,从而达到提高游戏流畅度的目的。其本质与缓存类似,即希望能减少那些频繁使用的对原创 2016-09-20 19:31:22 · 5637 阅读 · 0 评论 -
C++ 详解几种类型转换
C++ 详解几种类型转换首先我们要先了解一下C语言风格的类型转换,一般我们会用(T)expression或是T(expression)进行C语言的类型转换,然后 这种类型转换,会不分青红皂白的进行转换,ANSI C++定义了四种新类型的转换符号,分别是reinterpret_cast, static_cast, dynamic_cast和const_cast,旨在于控制类(class)之间的类型原创 2016-09-14 07:39:36 · 521 阅读 · 0 评论 -
一些学习基础知识比较好的网站
1.c++ STL 教程http://c.biancheng.net/stl/关于STL是使用方法和底层相关的数据结构和算法比较的详细,还有简单直观的图解1.c语言中文网http://c.biancheng.net/c/c++,linux等相关基础知识...原创 2019-03-14 11:33:58 · 625 阅读 · 0 评论