[Effective C++]条款01:视C++为一个语言联邦

最近在看Effective C++,连载一些自己的读书记录吧.尽量能多些自己的读书心得.少一些书中的摘录.

 

其实很早的时候就听说这本书了,也大概的看过一些电子书,感觉不错于是就买了纸张本的.但实在是够懒,这本书买来大概有一段时间了吧.(这段时间大概等于3个月= =||)

其实这本书在讲条款前有一些导读,大概就是一些C++的特性概述.暂且跳过了.呵呵...我开始读第一个条款啦.这个条款是属于让自己习惯C++大类中.嗯,我最早接触的程序语言是VB.大概在2001年的时候,VB说实话只是一个类似面向对象的语言而已.它缺少很多的面向对象语言的特性.但后续的发展很快,VB.NET就完全变成了面向对象的语言.这个是后话啦.然后再次接触到得语言是C语言,接着开始系统的学习了VB,用VB做课程设计,然后是脚本语言Javascript/vbscript for ASP用的啦.接着接触的第一个面向对象的语言JAVA,开始走进偶的生活,感觉面向对象真的是不错的概念.更加符合人的思维.后来为了找工作,开始接触.NET.开始学习C#和VB.NET.最后工作一直就在用C# FOR ASP.NET.在我的整个程序语言生活中接触C++的时间真的很少,以至于在2007年第一次开始用C++做一个项目的时候,真的是蒙到家啦,完全不符合我的个人习惯,用过.NET的人应该知道,其实微软的IDE工具智能提示是很方便的,但用在C++上就完全是另外一会事情啦.错误提示也是完全的不知所云.在.NET中无论是C#,还是VB.NET都有一套属于自己的语法规则.但C++的语法规则是什么??

    相信一开始接触C++的人都会被C++搞晕掉.(如果没有晕掉,恭喜你,你的智商比我高,O(∩_∩)O哈哈~)因为C++的类库如此之多,而且守则都不一样.如何利用做开发真的很晕迷.其实在Effective C++中的条款01:视C++为一个语言联邦,真的是很简单清楚的给出了C++这个语言一个明了的概述.C++是一个语言的联邦.就像美国是联邦政府一样.C++也是一个联邦政府,是4个次语言的联邦,这4个次语言的守则不大相同.所以一开始接触的时候乱掉是完全有可能的.O(∩_∩)O~ 我就是很乱,经历一年之后才模模糊糊有个概念.然后看过这个条款真的就使自己的这个模模糊糊的概念更加清楚.

    我们来看看C++的4个次语言:

    (1)C:说到底C++其实就是来自于C,所以C++也就继承了C的很多东西,区块,语句,预处理器,内置数据类型,指针等等.所以当以C++中的C成分工作时,就要遵守C的一些守则

    (2)Object-Oriented C++:C with Classes,这个时候就有了面向对象的东西,构造函数,析构函数,继承,封装,多态,virtual函数等等,面向对象的理论在C++的上最直接实施

    (3)Template C++:这个就是C++的泛型编程部分,也是最难得一部分,大部分程序员经验最少的一部分(当然包括我,呵呵).所以偶就跳过了,但书中说啦,TMP相关规则少于C++主流编程互相影响的.

    (4)STL:是个template程序库.STL有自己的特殊的办事方式,当使用STL工作的时候,必须要遵守它的规则.

 

C++并不是一个带有一组规则的一体语言;它是从四个次语言组成的联邦政府,每个次语言都有自己的规则.

其实这个Effective C++就是在讲如何用C++进行高效编程.那么通过这个联邦政府的忽悠论来看,就应该清楚知道啦.

            "C++的高效编程守则,视状况而变化,取决于使用了C++的哪一部分"

 

后话总结:

    C++是一个联邦政府,它有四个次语言,如果要利用C++进行高效编程,那么要看你是用了C++哪一个次语言.视状况而变化的嘛.

书中给了一个例子:

   对于内置的类型而言pass-by-value 通常比pass-by-referece高效,但当你从C part of C++移到 object-oriented C++,pass-by-refrence-to-const往往更好

   

转载于:https://www.cnblogs.com/fromchaos/archive/2009/06/27/1512473.html

你可能感兴趣的:([Effective C++]条款01:视C++为一个语言联邦)