Category Archives: C/C++

C++设计模式之策略模式[Strategy Pattern]

C++设计模式之策略模式[Strategy Pattern]

每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 而策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”

继续阅读

C++设计模式之代理模式 [Proxy Pattern]

C++设计模式之代理模式 [Proxy Pattern]

作为C++工程师,免不了要管理内存,内存管理也是C++中的难点,而智能指针采用引用计数的办法很方便的帮我们管理了内存的使用,极大方便了我们的工作效率。而智能指针的这种用法其实就是代理模式的一种,他帮我们控制了该对象的内存使用。

继续阅读

又一个我喜欢的脚本语言-Lua

又一个我喜欢的脚本语言-Lua

对,是又一个我喜欢的脚本语言-Lua,因为我还喜欢另外一个超级好用的脚本语言 – python,因为的库超级多,可以做任何事情,从后台到GUI的界面程序都可以。今天说说Lua,这个语言在2010年的时候第一次听说,是因为当时我们在做一个游戏,当时讨论说,游戏的逻辑部分看要不要用lua实现,不过后来并没有用Lua,而是全部用C++实现,因为没有愿意去学lua。

继续阅读

初识boost

初识boost

学习c++有十年了,但是还没有怎么用过boost库,08, 09年的时候就听过有这么一个库,但是没有用过,在2014年的时候,用过一点,只是boost的math部分,所以总的来说,对boost库的了解非常至少。这2天大概了解一下boost,发现它的强大之处。它使c++编程不再那么繁琐和低效,boost的理念都是从实际的开发实践中总结而来,所以非常的实用。其实boost库1999就问世了,后来一直不断丰富,发展到今天已经有100多个库。

继续阅读

linux模拟windows的kbhit

linux模拟windows的kbhit

Windows有个很不错的函数kbhit,可以检测是否有任何键按下了。例如我们可以检测键按下,来退出一个无限循环。还可以得到用户按下的这个键。

但是linux默认是没有这个函数的,我们可以使用下面自定义的函数来实现这个功能。

继续阅读

为代码优化提供证据和代码覆盖度

为代码优化提供证据和代码覆盖度

2个工具联合起来实现这一功能:

  • gcov
  • lcov

第一个是根据代码生成结果

第二个工具根据第一个工具产生的结果生成可视化的结果。

下载和说明

gcov:

https://gcc.gnu.org/onlinedocs/gcc/Gcov.html

lcov:

http://ltp.sourceforge.net/coverage/lcov.php

使用方法

假设你有代码, main.cpp

继续阅读

c++ 单元测试( unittest )

如果你想进行c++ 单元测试( unittest ) 

你可以选择:

CppUnit

CxxTest

Google Mock( gmock )

https://code.google.com/p/googletest/

https://github.com/google/lmctfy/tree/master/gmock/gtest/samples

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

继续阅读

多重继承及虚继承中对象内存的分布

多重继承及虚继承中对象内存的分布


这篇文章主要讲解G++编译器中虚继承的对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。问题拿捏得十分到位,下面是我对原文的翻译,原文见这里(By Edsko de Vries, January 2006)。

继续阅读