Effective C++ 系列 条款1:视C++为一个语言联邦

前往我的个人博客获得更好的阅读体验:https://sy-long.github.io

原书为《Effective C++》 —— Scott Meyers

如今的C++是门 多重范型的编程语言

  • 过程形式
  • 面向对象形式
  • 函数形式
  • 泛型形式
  • 元编程形式

这些能力和弹性让C++成为了一个无可匹敌的工具,但同时也因此引发了本条款要解决的问题:所有的“适当用法”似乎都有例外

(如针对内置类型,在不涉及修改内容时,应当使用pass-by-value-to-const,但对于用户自定义类型而言,pass-by-reference-to-const才是更适合的做法)


因此,我们应当正如标题所言,将C++视为一个语言联邦,而非单一语言
具体来说,我们可以将C++分为如下四个此语言:

  • C
  • Object-Oriented C++
  • Temolate C++
  • STL

当我们从一个次语言切换到另一个时,导致高效编程守则就会有些变化了,请注意

(如当你在C时,pass-by-value通常比pass-by-reference更高效,而当你从C移至Object-Oriented C++时,由于构造函数和析构函数的开销,pass-by-reference-to-const往往更好,进入Templete时更是如此,因为你甚至不知道你操作的对象的类型,然而当你进入STL,迭代器和函数对象都是在C指针之上塑造出来的,所以对STL的迭代器和函数对象而言,旧式的pass-by-value守则再次适用)(参数传递方式的选择细节请见条款20)

所以说,当你将C++视为由4个次语言所组成的语言联邦,而非单一语言,你将会发现C++容易了解得多


请记住:

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

猜你喜欢

转载自www.cnblogs.com/sy-long/p/11365762.html