Effect C++ --改善程序与设计的55条具体做法之条款01:视C++为一个语言联邦

一开始,C++只是C加上一些面向对象的特性。C++最初的名称C with Classes也反映了这个血缘关系(原话)。

但是随着C++的发展和成熟,它不再满足于C with Classes 的简单扩展,开始接受不同的特性,例如异常,例如模板,同时也给程序设计带来了与以往大为不同的设计思考。

今天的C++已经是个多重范式语言(multiparadigm programming language),它同时支持过程形式编程、面向对象形式编程、函数形式编程、泛型形式编程和元编程形式编程。对于这样一个庞大的语言体系,我们该如何去看待呢?

最简单的办法就是将C++视为一个由相关语言组成的语言联邦而不是单一语言。在不同的次语言中有不同的守则,当从不同语言转移到另外一个次语言时,守则可能需要改变。C++语言联邦主要的次语言包括以下四个:

  1. C。最终C++还是以C为基础的,区块(blocks)、语句(statement)、预处理器(preprocessor)、内置数据类型、数组和指针都来自C
  2. Object-Oriented C++。这是C++最初设计的思想,包括classes(构造和析构)、封装(encapsulation)、继承、多态和virtual函数等等
  3. Template C++。这是C++的泛型部分。
  4. STL

当我们从一个次语言切换到另外一个次语言时,可能需要遵循不同的高效编程准则。例如在C part of C++中以值专递可能比以引用传递更高效(条款20);但是当你切换到Object-Oriented C++的时候,由于构造函数和析构函数的存在,以引用传递往往比以值传递更高效;但是当切换到STL的时候,由于迭代器和函数对象都是在C的指针上面塑造出来的,以值传递又变得更实用(条款20)。所以C++不是一个带有某种准则的一体语言,而是有4个核心次语言组成的联邦,每个次语言都有自己的规约,记住这几个次语言的规约对于理解C++就会变得容易很多!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值