浅析C 语言风格问题
创始人
2024-06-21 13:51:29
0

对第一次接触到C++语言的用户和学者来说,了解C++语言的概念是非常重要的,那么就先说一下什么是C++语言,所谓C++语言:是一种使用非常广泛的计算机编程语言。

这些迹象反映出C++语言来源于C又尽量与C保持兼容的设计思想——这种设计思想既为C++的迅速普及提供了便利(C++语言的顺利推广显然得益于C语言已有的庞大用户群)。

也在C++的语言风格中深深地烙上了C语言的印记,以至于在若干年后,当C++语言已经基本具备了“独立人格”的时候,Stroustrup还不得不时常提醒人们要尽量抛开C语言的思维方式。

另一方面,Stroustrup从Simula语言借用的类、派生、访问控制等面向对象概念在带类的C中牢牢地扎下了根。据Stroustrup介绍,他为C语言引入面向对象机制的本意在于寻找一种“合适的工具”。

以便实现分布式系统或解决类似的复杂问题。但无论怎样,Stroustrup将C的高效和Simula的优雅捆绑在一起的做法都在事实上为C++语言埋下了“双重性格”的种子——很难说这不是C++语言风格多样化的直接诱因。

如果说C++语言的生身父母分别是C语言和Simula语言的话,那么,1984年出现的,借助操作符重载实现的I/O流技术就是C++这个幼童甩开父母的庇护,向新的代码风格迈出的第一步了。上面几行代码来自Stroustrup所著《C++程序设计语言》中的示例程序。注意那一行由“<<”连接的代码,I/O流、变量、字符常量在代码中被巧妙地串联在一起。

从技术角度看,这种全新语法的引入弥补了C语言中printf()函数族缺乏类型安全机制和扩展能力的弱点。从代码风格上说,“<<”等通俗易懂的运算符大大改变了程序员对C++语言的第一印象。

我自己第一次接触C++ I/O流库时,就曾清晰地感觉到,一个试图摆脱C语言风格束缚的C++精灵正顺着“<<”和“>>”组成的溪水“流淌”而来——这种行云流水般的代码风格在十几年前就已经显示出了C++语言在塑造新形象、引进新观念方面的决心和勇气。

20世纪80年代末到90年代初,X Window、Mac OS、Windows等窗口环境的先后出现为程序设计提出了新的课题,而C++语言兼顾面向对象和传统开发方法的特性无疑使其成为了窗口环境下编程语言的最佳选择。一批基于C++语言的窗口框架不仅在商业上取得了成功,也在很大程度上改变了C++语言本身的风格特点。

最早在窗口开发中赢得大多数程序员青睐的C++框架是Borland公司于1992年内置在Borland C++ 3.1中的OWL(Object Windows Library)框架库。下面这段代码取自Borland C++ 的示例程序:

为了解决窗口编程中最关键的消息映射问题,OWL的设计者为C++语言的成员函数引入了“=[…]”的古怪语法,这是许多用过Borland C++的程序员至今都无法忘怀的一种语言风格。

我承认,Borland公司在C++语言的发展初期为我们提供了最好的编译器和最出色的集成开发环境(IDE),但Borland通过OWL框架为C++引入的另类语言风格的确让人不敢恭维(客观地讲,这笔账也不应全算在Borland头上,因为OWL的前身是Borland从White Water公司购买的框架代码)。

【编辑推荐】

  1. 简介学习C++总结之谈
  2. 对C++库函数进行学习探索总结笔记
  3. C++类库设计的基本构思与方法
  4. C++语言真的还有市场价值?
  5. C++类库设计的基本构思与方法

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...