一直以来都是在钻研C语言,觉得C语言比C++语言要简单的多,而且,C语言能够更容易理解。最近,在使用C++语言来实现某些算法,发现C++语言在使用方面要比C语言优秀的多,不是因为C++屏蔽了指针的使用,而是C++语言一直在进步(这点是我最看重的)。到现在也有了auto关键字,智能指针库,线程库等等,总之,你会发现C++基本上在基础算法和数据结构方面给你提供了最大限度的帮助(当然,这部分的内容是要学习的)。C++在应用框架方面缺失的比较严重,比如,网络编程方面的库,文件解析的库等等,C++都没有提供(针对这个现象,我个人的理解是,C++这门语言应该更注重对算法的考量,这是这门语言的优势,对于其他外围的框架,我个人的方法是使用PYTHON作为我的第二门语言,这门语言最大的特点是提供了大量的第三方的库)。
1. 为什么函数参数的传递方式使用&引用的方式?
答:首先,我们要明白一点,并不是所有类型的参数都是使用引用的形式,因为引用形式尤其本身的特性,另外,C++并不排斥使用指针型的参数。
基础数据了类型(int,char等)C++不推荐使用引用型参数,当然,如果你想获得返回值,我们还是可以使用引用型参数。
如果您仅仅是想使用函数参数的值,而不是修改他的内容,我们推荐使用const &的形式,因为这种形式我们可以使用临时对象作为函数参数的值,如果是单纯的&引用形式,我们必须定义一个对象,然后用这个对象进行参数传值(这个特点我花了将近5年的时间才弄明白,不知道是不是自己太蠢了,还是自己太不仔细了)。
最后,因为STL11已经提供了智能指针,所以对于指针的方式,我渐渐的淡化了,不过,指针的操作我还是有了解的。智能指针的使用可以参考Huffman编码一文。