C++是比较有争议的一门语言,许多人认为它“难学又难用”。不论C++在未来演变成什么样的语言,在我眼里,C++始终不过是Bjarne Stroustrup的一个玩具。所以我接触C++,那只是因为我对他的这个玩具有那么一丁点兴趣。

我正打算简单、透彻的分析这个玩具。

不过我遵循这个神奇口袋系列的优良传统——尽可能忽略细节。正如,当我们男人对一个女人产生兴趣,通常我们的兴趣和性欲主要集中在她的面容和胸部,而不可能是她的脚趾头或者是耳朵里的耵聍。假如她的衣服和内裤是透明的,我们关心的兴趣则可能会更进一步,这不是我打算在此深入谈论的话题……我只是想说:通常情况,细节是不值得讨论的。除非那个细节让人无法按捺住心动。正文如下。


Ideals:C++的设计理想

C++的设计目标是允许程序员工作在最灵活层次的抽象,这一目标的实现通过提供:

  • A simple and direct mapping to hardware
  • Zero-overhead abstraction mechanisms

前者表明了C++对硬件的使用方式——直接使用,后者则强调C++抽象的轻量和低开销。这两者其实是相互蕴含和统一的,因为直接映射到硬件会降低抽象的开销(简单的道理:设计越复杂,成本就越大),反过来零开销的抽象设计又要求高效的使用硬件。

尽管语言的理想是如此,但糟糕的程序员可能无法遵守这个设计目标。