C++对C的加强

来源:互联网 发布:lamb动作数据下载 编辑:程序博客网 时间:2024/05/17 01:52

一、C++

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。
C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

二、C++与C的关系

1、C++继承了所有的C特性。
2、C++在C的基础上提供了更多的语法和特性。
3、C++的设计目标是运行效率与开发效率的统一。
C++与C语言的关系

三、C++对C的加强

1、对变量定义的加强
在C中: C语言中的变量都必须在作用域的开始位置定义;
在C++中: C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义;
注意: 在现代编译器中C已经可以。
2、对register关键字的变化
在C中: 在C语言中无法取得register变量的地址;
在C++中: 为了兼容C语言依然支持register关键字。C++编译器有自己的优化方式,不使用register也可能做优化。C++中可以取得register变量的地址,因为C++编译器发现程序中需要去register变量的地址时,register对变量的声明变得无效;
3、全局变量的声明
在C中: 全局变量的声明可以省略extern;
在C++中: 全局变量的声明不可以省略extern;
4、对const的加强
在C中: const修饰的是只读变量,分配存储空间,可以通过指针更改;
在C++中: const修饰的是常量,当碰见常量声明时在符号表中放入常量,编译过程中如发现使用常量则直接以符号表中的值替换,编译过程中若发现对const使用了extern或者&操作符,则给对应的常量分配存储空间。C++编译器虽然可能为const常量分配空间,但不会使用其存储空间中的值。它是常量,所以在C++中const可以用来定义数组的大小;
5、对类型的加强
在C中: C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型;
在C++中: C++中的struct是一个新类型的定义声明;
6、对函数定义的加强
在C中: 在缺省情况下会有一些默认情况。int f():表示返回值为int,接受任意参数的函数。int f(void):表示返回值为int的无参函数;
在C++中: C++中所有的变量和函数都必须有类型。C语言中的默认类型在C++中是不合法的。int f()和int f(void)具有相同的意义,都表示返回值为int的无参函数;
7、增加bool类型
在C中: 不存在bool类型,也不存在true和false关键字;
在C++中: 在C语言的基本类型系统之上增加了bool;C++中的bool可取的值只有true和false;理论上bool只占用一个字节,如果多个bool变量定义在一起,可能会各占一个bit,这取决于编译器的实现。true代表真值,编译器内部用1来表示;false电表非真值,编译器内部用0表示;bool类型只有true(非0)和false(0)两个值,C++编译器会在赋值时将非0值转换为true,0值转换为false;
8、三目运算符的升级
在C中: 三目运算符返回的是变量值,不能作为坐直使用;
在C++中: 三目运算符课直接返回变量本身,因为可以出现在程序的任何地方;
注意: 三目运算符可能返回的值中如果有一个是常量,则不能作为左值使用;

四、小结

C++以C语言为基础进行了加强:
1、C++更情调实用性,可以在任意的地方声明变量;
2、C++中的register只是一个向后兼容的作用,C++编译器能够进行更好的变量优化;
3、C++中的const是一个真正意义上的常量,而不是只读变量;
4、C++更加强调类型,任意的程序元素都必须显示指明类型;

0 0