1.C++的创建历程:
20世纪70年代中期,Bjarne Stroustrup在剑桥大学计算机中心工作。他使用过Simula和ALGOL,接触过C。他对Simula的类体系感受颇深,对ALGOL的结构也很有研究,深知运行效率的意义。既要编程简单、正确可靠,又要运行高效、可移植,是Bjarne Stroustrup的初衷。以C为背景,以Simula思想为基础,正好符合他的设想。1979年,Bjame Sgoustrup到了Bell实验室,开始从事将C改良为带类的C(C with classes)的工作。1983年该语言被正式命名为C++。自从C++被发明以来,它经历了3次主要的修订,每一次修订都为C++增加了新的特征并作了一些修改。第一次修订是在1985年,第二次修订是在1990年,而第三次修订发生在c++的标准化过程中。在20世纪90年代早期,人们开始为C++建立一个标准,并成立了一个ANSI和ISO(Intemational Standards Organization)国际标准化组织的联合标准化委员会。该委员会在1994年1月25曰提出了第一个标准化草案。在这个草案中,委员会在保持Stroustrup最初定义的所有特征的同时,还增加了一些新的特征。
在完成C++标准化的第一个草案后不久,发生了一件事情使得C++标准被极大地扩展了:Alexander stepanov创建了标准模板库(Standard Template Library,STL)。STL不仅功能强大,同时非常优雅,然而,它也是非常庞大的。在通过了第一个草案之后,委员会投票并通过了将STL包含到C++标准中的提议。STL对C++的扩展超出了C++的最初定义范围。虽然在标准中增加STL是个很重要的决定,但也因此延缓了C++标准化的进程。
委员会于1997年11月14日通过了该标准的最终草案,1998年,C++的ANSI/IS0标准被投入使用。通常,这个版本的C++被认为是标准C++。所有的主流C++编译器都支持这个版本的C++,包括微软的Visual C++和Borland公司的C++Builder。
2.C++与C的不同点(语法的变化):
宏观角度的变化:
1.C++基本支持C语言的所有语法
2.C++支持面向对象的编程思想
3.C++支持运算符重载和引用
4.C++支持泛型编程(模板支持)
5.C++支持异常处理(catch,try)
6.严格的类型检查(void*不能与其他类型进行转换,其它类型的数据不能为枚举赋值)
细节的变化:
1.文件扩展名:
C:
.c .h
C++:
.cpp .C .cc .cxx
2.编译器:
g++ 大多数电脑需要额外安装:ubuntu sudo apt-get g++
gcc 也可以继续使用,但需要添加-lstdc++
3.常用的头文件:
#include < iostream > C++原生的头文件不带
.h
以示与C的区分
C语言的头文件也能继续使用#include < cstdio >(stdio.h也能继续使用)
4.数据的输入输出
cout << 数据/变量
endl 换行
cin >> 变量
多个数据之间使用,要用 << 和 >> 分割
不需要再取地址,不需要点位符,C++会自动推到
scanf/printf也可以继续使用
5.增加的名字空间:
std::标识符 // 临时使用
using namespace std;//导入空间,只需要导入一次
6.结构体的变化
1.在定义结构对象时,struct关键字可以省略,不需要再typedef
2.结构体中可以定义成员函数,只能通过结构对象(->,
.
)调用,再成员函数中可以直接使用成员变量
7.枚举、联合
1.在定义枚举、联合对象时,enum、union可以省略
2.整形数据不能为枚举赋值
3.联合中也可以有成员函数,用法与struct一致
8.操作符别名
在某些欧洲语言中,由于字母比26个字母多,因此就占用键盘上的
‘~,&’
等符号,国际标准化组织就规则了这些运算符的别名,即使有些运算符不存在,也可以正常的进行编程
&& == and
| | == or
{ == <%
} == %>
3.C++与C哪个更优秀:
技术层面:
从技术层面上来看,C相对于C++有一定的速度优势,在一些小型的嵌入式系统中,运行速度差异较大,所以在一些小型的嵌入式系统中,C比C++用的广泛一些,但对于一些中大型程序而言,使用C++可以极大的减小开发的复杂度,其实也就是使用面向对象的思想,用C语言实现而已,所以C语言比C++更适合做底层的一些东西,例如驱动之类的,C++更适合做一些中大型程序。
商业层面:
因为C++更适合做中大型程序,所以在做一些商业性的软件,C++会比C更有优势,但在底层上,C更有优势
总结:
其实,与其说C与C++哪个更优秀,如果换个角度来看,倒不如说C与C++哪个缺点更多,在我看来,他俩不相上下,不然也不会存活至今了,时间是考验质量最好的东西了,只能说他俩各有所长。