C++设计模式之策略模式[Strategy Pattern]
每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 而策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用… 更多... “C++设计模式之策略模式[Strategy Pattern]”
IT夜班车
每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 而策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用… 更多... “C++设计模式之策略模式[Strategy Pattern]”
作为C++工程师,免不了要管理内存,内存管理也是C++中的难点,而智能指针采用引用计数的办法很方便的帮我们管理了内存的使用,极大方便了我们的工作效率。而智能指针的这种用法其实就是代理模式的一种,他帮我们控制了该对象的内存使用。
代理模式就是为其他对象提供一种代理来控制对这个对象的访问。
Proxy模式根据种类不同,效… 更多... “C++设计模式之代理模式 [Proxy Pattern]”
对,是又一个我喜欢的脚本语言-Lua,因为我还喜欢另外一个超级好用的脚本语言 – python,因为的库超级多,可以做任何事情,从后台到GUI的界面程序都可以。今天说说Lua,这个语言在2010年的时候第一次听说,是因为当时我们在做一个游戏,当时讨论说,游戏的逻辑部分看要不要用lua实现,不过后来并没有用Lua,而是全部用C++实现,因为没有愿意去学lua。
学习c++有十年了,但是还没有怎么用过boost库,08, 09年的时候就听过有这么一个库,但是没有用过,在2014年的时候,用过一点,只是boost的math部分,所以总的来说,对boost库的了解非常至少。这2天大概了解一下boost,发现它的强大之处。它使c++编程不再那么繁琐和低效,boost的理念都是从实际的开发实践中总结而来,所以非常的实用。其实boost库19… 更多... “初识boost”
之前本博客有介绍如何在python中调用的c的动态库
调用起来非常的不方便( 是通过c_types)
今天发现 boost的提供了boost::python库,是python和c的交互更加简单直接。下面是hello world的例子:
Following C/C++ tradition, let's start with the "hello, world". A C++ Functi… 更多... “利用boost::python使c/c++和python的交互更加方便了”
Windows有个很不错的函数kbhit,可以检测是否有任何键按下了。例如我们可以检测键按下,来退出一个无限循环。还可以得到用户按下的这个键。
但是linux默认是没有这个函数的,我们可以使用下面自定义的函数来实现这个功能。
实现的原理就是将阻塞模式的stdin改为非阻塞模式,然后尝试读取,读的时候有东西则按下了键,否则没有。
int kbh… 更多... “linux模拟windows的kbhit”
我们知道使用
printf("test \n");
这样只能输出一行。而我们看到过很多程序,启动后程序占满整个控制台窗口,这是怎么做到的呢?
原理就是先清掉整个整个屏幕
system( "clear");
让后画满整个屏幕
这个也是通过
printf()
这个函数实现。
然后
画完一屏之后,
再次调用 system("clear&qu… 更多... “linux 用c程序写整个控制台”
2个工具联合起来实现这一功能:
第一个是根据代码生成结果
第二个工具根据第一个工具产生的结果生成可视化的结果。
gcov:
https://gcc.gnu.org/onlinedocs/gcc/Gcov.html
lcov:
http://ltp.sourceforge.net/coverage/lcov.php
假设你有代… 更多... “为代码优化提供证据和代码覆盖度”
如果你想进行c++ 单元测试( unittest )
你可以选择:
CppUnit
CxxTest
Google Mock( gmock )
https://code.google.com/p/googletest/
https://github.com/google/lmctfy/tree/master/gmock/gtest/samples
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且… 更多... “c++ 单元测试( unittest )”
这篇文章主要讲解G++编译器中虚继承的对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。问题拿捏得十分到位,下面是我对原文的翻译,原文见这里(By Edsko de Vries, January 2006)。
本文是介绍C++的技术文章,假定读者对于C++有比较深入的认识,同时也需要一些汇编知识。
本文我们将阐释GCC… 更多... “多重继承及虚继承中对象内存的分布”