浅析难以捉摸的C++语言多样化问题

开发 后端
也许大家对C++语言还不是很了解,看完本文后对您一定会大有帮助,下文除了学习C++语言的基本性质外还C++语言的编辑技巧全面研究。

其实C#的语法与C++语言非常相似,有些变化引起的错误却很严重,本文就对于大多数用户头疼的C++语言进行详细的剖析与介绍,建议我们把标准C++当作一种全新的语言来学习。

程序代码也有风格,这算不得什么新鲜事。早在20世纪80年代, C语言程序员就必须在K&R风格和ANSI风格之间择善而从。但平心而论,我确实没有见过哪一种语言能像C++这样,

在代码风格方面表现得如此诡谲和难以捉摸:谁也说不清C++代码究竟能衍生出多少种迥异的风格,但我知道,有许多C++初学者在面对不同风格的C++代码时,经常会误以为自己看到的是好几种完全不同的编程语言——仅此一点就足以提醒我们,研究和廓清C++语言风格的演化和发展规律已是当务之急了。

带类的C——对C语言风格的因袭

在1983年12月Bjarne Stroustrup采纳Rick Mascitti的建议,将其发明的新语言命名为“C++”之前,人们一直用“带类的C(C with Classes)”来称呼这种脱胎于C语言的,带有数据抽象机制的“方言”。

虽然带类的C在本质上仅仅是一种可以被预处理程序Cpre转换为传统C语言代码(这类似于我们在Oracle中见到的Pro*C语言的预处理过程)的扩展性语言,但它的确在风格上奠定了后来所有C++代码的基础。

  1. class stack {  
  2.   char s[SIZE];  
  3.   char* min;  
  4.   char* top;  
  5.   char* max;  
  6.   void new();  
  7. public:  
  8.   void push(char);  
  9.   char pop();  
  10. }; 

这段“带类的C”代码录自Stroustrup所著的《C++语言的设计和演化》。代码中的new()其实是类stack的构造函数,这与后来的C++语言有很大的不同。

显而易见,带类的C在风格上几乎完整地承袭了C语言的衣钵。代码中的声明语句看上去与C语言一模一样,class的结构也与C语言中struct的结构大致相仿,这些迹象反映出C++语言来源于C又尽量与C保持兼容的设计思想。

这种设计思想既为C++的迅速普及提供了便利(C++语言的顺利推广显然得益于C语言已有的庞大用户群),也在C++的语言风格中深深地烙上了C语言的印记,以至于在若干年后,当C++语言已经基本具备了“独立人格”的时候,Stroustrup还不得不时常提醒人们要尽量抛开C语言的思维方式。

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

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

【编辑推荐】

  1. 简介学习C++总结之谈
  2. 对C++库函数进行学习探索总结笔记
  3. C++类库设计的基本构思与方法
  4. C++语言真的还有市场价值?
  5. C++类库设计的基本构思与方法
责任编辑:chenqingxiang 来源: NET130
相关推荐

2021-01-08 10:47:07

机器学习模型算法

2010-01-21 16:18:06

C++语言

2010-01-27 15:05:04

C++标准化

2016-08-12 09:24:33

开源多样化亮点

2010-07-29 17:00:36

Flex饼图

2013-02-22 11:39:27

BGP控制方式路由流向

2015-03-23 16:42:06

2011-06-22 09:54:13

网络技术虚拟化网络OpenFlow

2021-02-05 23:18:55

云计算IT技术

2010-11-09 10:37:21

2015-10-09 11:27:36

综合布线布线技术

2017-05-16 15:00:25

存储云端解决方案

2015-01-07 09:42:55

5G25G以太网

2015-12-11 22:40:10

大数据OpenPOWERPOWER8

2017-11-09 13:41:30

2013-01-23 09:33:29

交换机设备故障

2013-05-15 10:49:36

华为全景智真视讯终端

2011-06-28 13:11:10

2010-01-25 14:18:46

C++对象模型

2012-04-13 16:29:20

明基投影仪
点赞
收藏

51CTO技术栈公众号