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

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

Item 01: View C++ as a federation of languages


C++

如今的C++已经是个多重范型编程语言:一个同时支持过程形式(procedural)、面向对象形式(object-oriented)、函数形式(functional)、泛型形式(generic)、元编程性形式(metaprogramming)的语言。

C++语言联邦

这些能力和弹性使C++成为一个强大的工具,但也会带来很多疑惑:所有“适当方法”似乎都有例外。我们该如何理解这样一个语言呢?

语言联邦

最简单的方法是将C++视为一个由相关语言组成的联邦而非单一语言。

C++的四个子语言

在其某个子语言中,各种守则与通例都倾向于简单、直观易懂、并且容易记住。然而当你从一个子语言移往另一个子语言时,守则可能改变。为了理解C++,必须要认识其主要的子语言。幸运的是只有四个:

C。说到底C++仍是以C为基础。区块、语句、预处理器、内置数据类型、数组、指针等统统来自C。许多时候C++对问题的解法其实不过就是较高级的C解法,但当你以C++内的C成分工作时,高效编程守则映照出C语言的局限:没有模板,没有异常,没有重载……

Object-Oriented C++。这部分也就是C with Classes所要求的:classes、封装、继承、多态、virtual函数……等等。这一部分是面向对象设计在C++上的最直接实施。

Template C++。这是C++的泛型编程部分,也是大多程序员经验最少的部分。Template相关考虑与设计已经弥漫整个C++。由于templates威力强大,它带来崭新的编程范型,也就是所谓的template metaprogramming(TMP,模板元编程)。

STL。STL是个template程序库。它对容器、迭代器、算法以及函数对象的规则有极佳的紧密配合与协调。STL有自己特殊的办事方式,当你同STL一起工作时候,你必须遵守它的规则。

C++并不是一个带有一组守则的一体语言:它是从四个子语言组成的联邦,每个语言都有自己的规约。

NOTE:

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


Effective C++

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值