如果有性别的话,递归一定是个男人。
把所有的困难、麻烦都一人顶着。无怨无悔,表面上却显得轻轻松松的。

它用栈把复杂的过程都给掩盖起来,
展现给大家确是简单的描述。

太赞递归啦!

后续:这个男人背后的女人是。。。

是栈,因为她默默的打点背后的一切,英雄背后的英雄

        const这个关键字对于任何熟识c/c++语言的人都不陌生,而且有关const的应用在各个书中也提到了不少,const对于程序的健壮性有着很大的贡献,”Use const whenever you nedd”。

        1.  用const修饰常量,注意const的左结合特性,到底修饰了变量,还是修饰了变量的指针。

        2.  用const修饰参数,const只能修饰输入参数,避免参数(指针,引用)被误修改,但是对于值传递的方式使用const就多此一举,值传递函数只操纵副本,而对于非内部数据类型的输入参数,采用引用方式const A &a的参数传递最好,避免产生和销毁临时对象调用构造和析构的时间,但是内部数据类型则没必要。

         3. 用const修饰函数返回值,函数的返回值被const修饰以后,只能赋值给定义为const的变量。但是此种方式对于值传递的返回值则没必要,因为函数会把返回值复制到外部临时的存储单元,即int f()不需要 const int f()。

         4. 用const修饰成员函数,禁止该成员函数修改成员变量或者调用非const的成员函数。

        当然最后还是一点,const的声明是为了使程序员的工作效率更高,编译器能检测出异常修改,但是如果采用一些所谓的“技巧”就可以强行修改掉所谓的const,但是这也是无意识的。

1. 值传递,引用传递,指针传递
以上3个概念主要为函数传递参数的方式,对于值传递和指针传递一般都没什么问题,值传递的特点就是局部变量是传递参数的一份拷贝,函数中任何对于参数的修改只是对于拷贝的修改而非变量本身。而指针传递则就修改的是传递进来的变量本身了,因为传递的是变量的内存地址。
引用是C++中的一个概念,是一种介于以上两者之间的应用方式,引用不能为空,任何时候定义的引用必须初始化并且不能改变(别名),而指针则可以改变,并且可以为Null,而引用则不能为Null.
实际上用引用传递的功能都可以用指针传递实现,但是为了做到权限最小,即“用适当的工具做恰如其分的工作”,避免越权操作,所以引用的引入还是很必要的。同时对于非数据成员,值传递必须创建临时对象,需要调用构造,析构函数并消耗空间,而引用则不必这样了。

阅读全文…

回到家很懒的看书,加上半天时间要献给学车,更不行了,趁周末空了赶紧花了几个小时把这本书翻了一遍,感觉获益不少,趁热打铁,记录下来……
先说书中提到的一些基本风格而我经常忽视或者未注意到的十条规则:

1. 头文件.h:只存放“声明”不存放“实现”,并利用ifndef/define/endif结构避免重复引用。

2. 空格的适当运用。二元操作符前后空,参数列表的‘,’后要空。

3. 对于类的定义尽量采用“以行为为中心”的格式,先函数,再数据。

4. i,j,k等一般只作为较小的局部变量名(循环体),而对于作用域较大的变量命名需遵守成个工程的规则并有含义。

5. 注重运算符的优先级,并多用()来划定运算优先级。不要把程序中的复合表达式和数学表达式混淆。

阅读全文…

, ,

编辑 ~/.xine/catalog.cache 文件
找到
[/usr/lib/xine/plugins/1.1.4/xineplug_decode_real_audio.so]
把 decoder_priority 增加到 10

另外,用ubuntu自带的电影播放器totem玩万能播放需要添加的解码器,安装如下

安装gstreamer的解码器
代码:
sudo apt-get install gstreamer0.10-pitfdll gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse

安装xine及解码器
代码:
sudo apt-get install libxine-extracodecs totem-xine ffmpeg lame faad sox mjpegtools libxine-main1

安装w32codecs
代码:
sudo apt-get install w32codecs