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

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

每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 而策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用更多... “C++设计模式之策略模式[Strategy Pattern]”

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

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

 

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

代理模式就是为其他对象提供一种代理来控制对这个对象的访问。

 

种类和用途

Proxy模式根据种类不同,效… 更多... “C++设计模式之代理模式 [Proxy Pattern]”

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

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

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

用… 更多... “又一个我喜欢的脚本语言-Lua”

初识boost

初识boost

 

学习c++有十年了,但是还没有怎么用过boost库,08, 09年的时候就听过有这么一个库,但是没有用过,在2014年的时候,用过一点,只是boost的math部分,所以总的来说,对boost库的了解非常至少。这2天大概了解一下boost,发现它的强大之处。它使c++编程不再那么繁琐和低效,boost的理念都是从实际的开发实践中总结而来,所以非常的实用。其实boost库19… 更多... “初识boost”

利用boost::python使c/c++和python的交互更加方便了

之前本博客有介绍如何在python中调用的c的动态库

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的交互更加方便了”

linux模拟windows的kbhit

linux模拟windows的kbhit

 

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

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

实现的原理就是将阻塞模式的stdin改为非阻塞模式,然后尝试读取,读的时候有东西则按下了键,否则没有。

 

int kbh更多... “linux模拟windows的kbhit”

linux 用c程序写整个控制台

linux 用c程序写整个控制台

 

我们知道使用

printf("test \n");

这样只能输出一行。而我们看到过很多程序,启动后程序占满整个控制台窗口,这是怎么做到的呢?

原理就是先清掉整个整个屏幕

system( "clear");

让后画满整个屏幕

这个也是通过

printf()

这个函数实现。

然后

画完一屏之后,

再次调用 system("clear&qu… 更多... “linux 用c程序写整个控制台”

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

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

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

  • gcov
  • lcov

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

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

 

下载和说明

gcov:

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

lcov:

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

 

使用方法

假设你有代… 更多... “为代码优化提供证据和代码覆盖度”

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

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

本文是介绍C++的技术文章,假定读者对于C++有比较深入的认识,同时也需要一些汇编知识。

本文我们将阐释GCC… 更多... “多重继承及虚继承中对象内存的分布”