C++对C语言的扩充


一、C++的特点:

  C++对C的“增强”,表现有两个方面:

    (1).在原来的面向过程的机制基础上,对C语言的功能做了不少扩充。

    (2).增加了面向对象的机制。

二、C++与C的简单区别:

  (1).在C++程序中一般习惯在主函数main前面加一个类型声明符void,表示main函数没有返回值。

  (2).除了可以用形式的注释行外,还允许使用以//开头的注释。//为单行注释。

  (3).除了可以用printf函数输出信息外,还可以用cout进行输出。cout要与运算符<<配合使用,程序中cout的作用是将<<运算符右侧的内容送到输出设备中输出。

  (4).使用cout需要用到头文件iostream.h,在程序的第一行用#include命令将该头文件“包含”进来。

三、C++输入输出:

  C++输入输出需要用到头文件“iostream.h”。

  在C语言中文件不是由记录构成的,对文件的存取是以字节为单位的,对一个C文件的输入和输出是一个字节流。输入和输出的数据流的开始和结束只受程序控制而不受物理符号(如回车换行符)的控制,这种文件称为流式文件。

  (1).用cout进行输出,cout必须与输出运算符<<一起使用。从屏幕上标准输出。 

  (2).用cin进行输入,cin必须与提取运算符>>一起使用。从键盘上标准输入。其中>>常称为“提取运算符”。输入的操作称为:“提取”(extracting)或“得到”(getting)。

  (3).用cerr从屏幕标准出错输出。

  (4).用clog从屏幕作cerr的缓冲形式。

四、函数的重载:

  允许一个运算符用于不同场合,有不同的含义,这就叫运算符的“重载”(overloading),即重新赋予它新的含义,其实就是“一物多用”。

  C语言规定在同一作用域(如同一文件模块中)中不能有同名的函数,所以C语言不支持函数重载。

  C++允许在同一作用域中用同一函数名定义多个函数,这些函数的个数和参数类型不同,这就是函数重载,即一个函数名多用。

五、带缺省参数的函数:

  一般情况下,实参个数应与形参个数相同,C++允许实参个数与形参个数不同,办法是在形参表列中读一一个或几个形参指定缺省值(或称默认值)。其形式如下:

    函数类型  函数名(参数类型 参数1,参数类型 参数2,参数类型 参数3=常量) 注意:赋予缺省值的参数必须防在形参表列中的最右端。

  注意:不要同时使用重载函数和缺省参数的函数,因为当调用函数时少写一个参数,系统无法判定是利用重载函数还是利用缺省参数的函数,会发生错误。

六、变量的引用类型:

  (1).概念:“引用”(reference)是C++的一种新的变量类型,是对C的一个重要扩充,它的作用是为一个变量起一个别名。一个变量a,想给a起一个别名b,可以这样写:int a; int &b=a;这里的“&”是“引用声明符”,并不代表地址。

  (2).引用的简单使用:(略过)

  (3).引用作为函数参数:

  C语言中函数参数传递有以下两种情况:

    a.将变量名作为实参,这时传给形参的是变量的值,传递是单向的,在执行函数期间形参值发生变化并不传回给实参,因为在调用函数时,形参和实参不是同一个存储单元。

    b.传递变量的指针,使形参得到一个变量的地址,这时形参指针变量指向实参变量单元。

  在C语言中,只有“值形参”而无“变量形参”,全部都采用值传递的方式,C++把引用类型变量作为函数参数,就弥补了这个不足。C++提供了向函数传递数据的第三种方法,即传送变量的别名。

七、内置函数:

  调用函数时需要一定的时间,如果有的函数需要频繁使用,则所用时间会很长,从而降低程序的执行效率。C++提供一种提高效率的方法,即在编译时将所调用函数的代码嵌入到主调函数中,这中嵌入到主调函数中的函数称为内置函数(inline function),又称内嵌函数,在有写书中译为“内联函数”。

  指定内置函数的方法很简单,只需在函数首行的左端加一个关键字inline即可。简单的说内置函数其实就是用函数体的代码代替主调函数中的调用函数一项,同时将实参代替形参,虽然增加了目标程序的长度,但这样可以节省运行时间,对于规模很小而使用频繁的函数,可大大提高运行速度。

八、作用域运算符:

  C++提供作用域运算符"::",它能指定所需要的作用域。注意:不能用"::"访问函数中的局部变量。

九、动态分配/撤消内存的运算符new和delete:

  C++提用了比较简便而功能较强的运算符new和delete来取代malloc和free函数(为了与C语言兼容,仍保留这两个函数)。

  new运算符使用的一般格式为:

    new 类型 [初值]

    用new分配数组空间时不能指定初值。

  delete运算符使用的一般格式为:

    delete [] 指针变量

注意:new和delete是运算符,不是函数,因此执行效率高。malloc要和free函数配合使用,new和delete配合使用。不要混合使用(如用malloc函数分配空间,用delete撤消,这样是不允许的)。