《Effective C++》笔记与杂谈——条款01

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

        C++是以C为基础由C++祖师爷Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)发明出来的,一开始只是在C语言的基础上添加了面向对象的特性,C++最初的名字C with class也说明了这一点。随着时间的流动,C++也在一步步向前演化。

        到今天为止,C++已经是一个多重范型编程语言。一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言。这些形式使得C++非常的强大,但也对C++使用者的要求更高。使用者不仅仅要知道怎么使用各个形式,还需要知道如何高效的使用各个形式。另外,对于不同的形式来说,高效的具体做法可能是不一样的。

        那么如何区分自己在什么样的形式下使用不同的高效做法呢?正如条款01标题:视C++为一个语言联邦。将C++这一个语言视为4个不同的次语言。那么在某个次语言中,使其高效的守则与通例都倾向简单、直观易懂、并且容易记住。然而当我们从一种语言切换到另外一种语言时,高效守则可能发生改变。

        C++的4个次级语言分别是:C,面向对象C++(Object-Oriented C++),模版C++(Template C++),STL(标准模版库)。这里不做具体每个次语言的详细说明,因为那些内容属于C++基础内容,本书是C++程序员的进阶学习。

        记住这4个次级语言,当从一个语言切换到另外一个语言时,高效编程的守则可能发生改变。在不同的次级语言中,我们应该有不同的编程习惯来使得我们的C++程序更加的高效。

        下面举一个高效策略发生改变的例子。在次语言C中,我们在将参数仅作为传入参数使用的时候,传值比传引用更加高效;在面向对象C++和模版C++中则是传常引用比传常值更加高效;而到了STL的迭代器和函数对象中又变成了传值比传引用更加高效(条款20会更加详细阐述参数传递和原因)。

总结:

        因此,C++并不是一个单一的语言,而是一个语言联邦,由四个次级语言组成,每个次级语言都有自己的规约。记住这四个语言你就会发现C++容易了解得多。在往后的笔记中,我会多次提及4个次级语言。

请记住:

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

你可能感兴趣的:(c++,笔记,开发语言)