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

View C++ as a federation of languages

  • 一开始,C++只是在C的基础上加上了一些面向对象的特性而已。C++ 最初的名称叫做:C with Classes ,这也间接的反映了这一血缘关系。
  • 但是但这个语言逐渐成熟,它变得更活跃更无拘无束,更大胆冒险,开始接受不同于C with Classes的各种观念、特性和编程战略。Exceptions(异常)对函数的结构化带来不同的做法,templates(模板)将我们带到新的设计思考方式,STL则定义了一个蜷缩未见的伸展性做法。
  • 而今天的C++已经是一个多重泛型的编程语言,一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言,这些能力和弹性使C++成为一个无可匹敌的工具。

我们该如何连接这样一门语言呢?

—— 最简单的方法就是将C++ 视为一个有相关语言组成的联邦而非单一语言。在其某个次语言中,各种守则与通例都倾向简单、直观易懂、并且容易记住。然而但你从一个次语言移往另一个次语言时,守则可能会改变。为了理解C++,你必须认识其主要的次语言。幸运的是总共只有四个:

  • C: 说到底C++仍是以C语言为基础的。区块、语句、预处理器、内置数据类型、数组、指针等都是来自于C。许多时候C++的问题的解法不过是较高级的C解法,但你以C++内的C成分工作时,高效编程则照应出C语言的局限:没有模板、没有异常、没有重载...
  • Object-Oiented C++: 这部分就是C with Classes所诉求的:classes(包括构造函数和析构函数),封装、继承、多态、virtual函数...等。这一部分是面向对象设计之古典守则在C++上的直接实施。
  • Template: 这是C++的泛型编程部分,也是大多数程序员挤眼最少的部分。实际上templates威力强大,它们带来了崭新的泛型编程,。
  • STL: STL是一个程序库,看名称也知道,它是非常特殊的一个。它对容器、迭代器、算法、以及函数对象的规约有极佳的紧密配合与协调,然而templates以及程序库也可以其他想法建置出来。STL有自己特殊的办事方式,当你伙同STL一起工作时,你必须遵守它的规约。

当你一旦跨入STL你就会了解,迭代器和函数对象是在C指针之上捏造出来的,所以对STL的迭代器和函数对象而言,pass-by-value守则再次适用。

  • 因此,C++并不是一个带有一组守则的一体语言;它是从四个次语言组成的联邦政府,每个次语言都有自己的规约。记住这四个次语言你就会发现C++容易了解很多。

内容来自Effective C++,如果你热爱C++,那请你一定要坚持下去,加油!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学编程*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值