




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1 1章章 C+C+程序设计基础程序设计基础 1.1 C+的发展和主要特点的发展和主要特点 1.1.1 C+的发展的发展 C+由由AT&T Bell Laboratories的的Bjarne Stroustrup设计和实现的,设计和实现的,C+最初的版本被称作最初的版本被称作“带类的带类的C” 1980年第一次投入使用年第一次投入使用 支持面向对象特性在支持面向对象特性在1983年被加入到年被加入到C+中,在中,在1987年至年至1989年之间,年之间,模板模板技术被加进了技术被加进了C+ C+标准化工作在标准化工作在1990年启动。标准化工作由年启动。标准化工作由ANSI(美国国
2、家标准化组织)及后来加入的(美国国家标准化组织)及后来加入的ISO(国际标准化组织)负责。(国际标准化组织)负责。1998年正式发布了年正式发布了C+国际标准国际标准1.1.2 C+的特点的特点 一个更好的一个更好的C C+兼容兼容C,会,会C的程序员,可在的程序员,可在C 的基础上逐的基础上逐步加入步加入C+的新特性的新特性 支持面向对象程序设计支持面向对象程序设计 C+通过类支持面向对象程序设计通过类支持面向对象程序设计 支持范型程序设计支持范型程序设计 在在C+中,通过模板简单而实用地实现了范型中,通过模板简单而实用地实现了范型程序设计技术程序设计技术 1.2 第一个第一个C+程序以及程
3、序以及C+程序开发过程程序开发过程 1.2.1 第一个第一个C+程序程序 C+程序的结构严谨,下面介绍著名的程序的结构严谨,下面介绍著名的“Hello, world!”程序,此程序一般用于介程序,此程序一般用于介绍各种语言的第一个程序绍各种语言的第一个程序 程序功能是在屏幕上输出字符串程序功能是在屏幕上输出字符串“Hello, world!”。 例例1.1 在屏幕上输出在屏幕上输出“Hello, world!”/ 文件路径名文件路径名:e1_1main.cpp#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std int m
4、ain()/ 主函数主函数main() cout “Hello, World!” endl;/ 用用C+方法输出一行方法输出一行system(“PAUSE”);/ 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统程序运行时屏幕输出如下:程序运行时屏幕输出如下:Hello, world!请按任意键继续请按任意键继续. . .注释注释上面程序的第一行如下:上面程序的第一行如下:/ 文件路径名文件路径名:e1_1main.cpp这一行不是程序代码,是注释,告诉读者程序的这一行不是程序代码,是注释,告诉读者程序的文件路径名,位于文件路径名,位于“/”后
5、面的文本都是注释后面的文本都是注释读者应养成给程序添加注释的习惯读者应养成给程序添加注释的习惯在在C+程序中,可以使用程序中,可以使用C语言中语言中“/* */”形式的注释,还可以使用以形式的注释,还可以使用以“/”开头的注释开头的注释输出信息输出信息 例例1.1中的中的main()函数体包含了如下的语句:函数体包含了如下的语句:cout Hello, World! endl;/ 用用C+的方法输出一行的方法输出一行 cout实际上是实际上是C+系统预定义的对象名,称为标准输出流对系统预定义的对象名,称为标准输出流对象。象。“”是是“输出运算符输出运算符”,在上面的代码中将运算符,在上面的代码
6、中将运算符“”右侧双引号内的字符串右侧双引号内的字符串“Hello, World!”插入到输出流插入到输出流中,中,endl用于表示换行,用于表示换行,endl也插入到输出流中,也插入到输出流中,C+系统系统将输出流的内容输出到系统指定的设备(一般为显示器)将输出流的内容输出到系统指定的设备(一般为显示器)上上 C+中也可以用中也可以用C函数函数printf()进行输出进行输出 main()函数中还包含了调用函数中还包含了调用system()函数的语句:函数的语句:system(PAUSE);/ 输出系统提示信息输出系统提示信息 system(PAUSE)函数调用将使程序暂停,以便用户观察执函
7、数调用将使程序暂停,以便用户观察执行结果行结果预处理命令和命名空间预处理命令和命名空间std cout需要用到头文件需要用到头文件iostream。程序中如下的代码行。程序中如下的代码行#include / 编译预处理命令编译预处理命令是一个预处理命令,文件是一个预处理命令,文件iostream的内容提供输入或输的内容提供输入或输出时所需要的一些信息出时所需要的一些信息 注意:注意:在在C语言中所有的头文件都带后缀语言中所有的头文件都带后缀.h,C+标准要标准要求由系统提供的头文件不带后缀求由系统提供的头文件不带后缀.h,用户自己编制的头,用户自己编制的头文件可以有后缀文件可以有后缀.h。在。
8、在C+中也可使用中也可使用C语言编译系统提语言编译系统提供的带后缀供的带后缀.h的头文件,如的头文件,如“#include ” 程序的如下代码:程序的如下代码:using namespace std;/ 使用命名空间使用命名空间std 表示使用命名空间表示使用命名空间std。C+标准库中的标准库中的类类和和函数函数是在命是在命名空间名空间std中声明的,程序中可用中声明的,程序中可用“using namespace std;”语句声明,表示要用到命名空间语句声明,表示要用到命名空间std中的内容中的内容定义定义main()函数函数 下面的代码行定义了下面的代码行定义了main()函数:函数:i
9、nt main()/ 主函数主函数main() cout Hello, World! endl;/ 输出一行输出一行system(PAUSE);/ 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统 所有所有C+程序程序都由都由一个一个或或多个多个函数组成,每个函数组成,每个C+程序都程序都必必须有须有一个一个main()函数函数定义定义main()函数函数 定义定义main()函数的第一行代码如下:函数的第一行代码如下:int main()/ 主函数主函数main()的的int表示表示main()函数的返回值的类型,表示返回一个整数函数的返回值
10、的类型,表示返回一个整数值,执行完值,执行完main()函数后将返回给操作系统的一个代码,它函数后将返回给操作系统的一个代码,它表示程序的状态。在下面的语句中,指定了执行完表示程序的状态。在下面的语句中,指定了执行完main()函函数后要返回的值:数后要返回的值:return 0; / 返回值返回值0, 返回操作系统返回操作系统main()函数通常用返回函数通常用返回0表示程序正常终止,而返回非表示程序正常终止,而返回非0值表值表示发生了异常示发生了异常 标准标准C+要求要求main()函数必须声明为函数必须声明为int型。有的操作系统型。有的操作系统(如(如Linux)要求执行一个程序后必须
11、向操作系统返回一个数要求执行一个程序后必须向操作系统返回一个数值。但有些值。但有些C+编译系统并未完全执行编译系统并未完全执行C+这一规定,如主这一规定,如主函数首行写成函数首行写成“void main()”也能通过,本书中的所有例题也能通过,本书中的所有例题都按标准都按标准C+规定写成规定写成“int main()”。1.2.2 C+程序开发过程程序开发过程 注意:注意:当前的当前的C+语言开发环境中都语言开发环境中都集成集成了以上四个步骤,了以上四个步骤,大大方便了大大方便了C+语言的开发工作。附录语言的开发工作。附录B讨论了常用讨论了常用C+语言开发环境的使用方法。语言开发环境的使用方法
12、。请同学们至少选择请同学们至少选择一种一种(如能做到两种更好)(如能做到两种更好)C+编译系编译系统,在该环境下统,在该环境下输入输入和和运行运行例题和习题中的例题和习题中的程序程序。1.3 C+在非面向对象方面的在非面向对象方面的常用新特性常用新特性 C+在非面向对象方面的常用新特性在非面向对象方面的常用新特性 C+是从是从C发展而来的,发展而来的,C+对对C引入了面引入了面向对象的新概念,同时也增加一些向对象的新概念,同时也增加一些非面向非面向对象对象的新特性,这些特性使的新特性,这些特性使C+使用起来更使用起来更方便与更安全,本节将讨一些常用新特性。方便与更安全,本节将讨一些常用新特性。
13、1.3.1 C+的输入输出的输入输出 为了方便用户,为了方便用户,C+还增加了标准输入输出还增加了标准输入输出流对象流对象cout和和cin。cout代表代表标准输出流对标准输出流对象象,cin代表代表输入流对象输入流对象 cout和和cin都是在头文件都是在头文件iostream中定义的。中定义的。cin的输入设备是的输入设备是键盘键盘,cout的输出设备是的输出设备是屏幕屏幕cout cout是从内存向屏幕流动的数据流。是从内存向屏幕流动的数据流。cout必须和输出必须和输出运算符运算符“”配合使用。配合使用。“”在此处起到插入的作在此处起到插入的作用,例如:用,例如:cout ”运算符从
14、运算符从输入设备键盘取得数据送到标准输入流输入设备键盘取得数据送到标准输入流cin中,然后中,然后再送到内存。再送到内存。“”常称为输入运算符。常称为输入运算符。 cin应与应与“”配合使用。例如:配合使用。例如:int m;/ 定义整型变量定义整型变量mfloat x;/ 定义浮点型变量定义浮点型变量xcin m x;/ 输入一个整数和一个实数输入一个整数和一个实数 可以从键盘输入:可以从键盘输入:16 168.98m和和x分别获得值分别获得值16和和168.98。例例1.2 cin与与cout使用示例使用示例a。#include / 编译预处理命令编译预处理命令using namespac
15、e std;/ 使用命名空间使用命名空间std int main()/ 主函数主函数main() cout 请输入你的姓名与年龄请输入你的姓名与年龄: name;/ 输入姓名输入姓名cin age;/ 输入年龄输入年龄cout 你的姓名是你的姓名是: name endl; / 输出姓名输出姓名cout 你的年龄是你的年龄是: age endl;/ 输出年龄输出年龄system(PAUSE);/ 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统对变量的定义放在执行语句之对变量的定义放在执行语句之后。在后。在C语言中要求变量的定语言中要求变量的定义
16、必须在执行语句之前。义必须在执行语句之前。C+允许将变量的定义放在程序的允许将变量的定义放在程序的任何位置。任何位置。1.3.2 const定义常量定义常量 在在C语言中常用语言中常用#define命令来定义符号常量,例如:命令来定义符号常量,例如:#define PI 3.14159/ 声明符号常量声明符号常量PI在预编译时进行字符替换,把程序中出现的字符串在预编译时进行字符替换,把程序中出现的字符串PI全部替换为全部替换为3.14159 C+提供了用提供了用const定义常量的方法,例如:定义常量的方法,例如:const float PI = 3.14159;/ 定义常量定义常量PI常量常
17、量PI具有数据类型,在编译时要进行类型检查,占具有数据类型,在编译时要进行类型检查,占用存储单元,在程序运行期间它的值是固定的。用存储单元,在程序运行期间它的值是固定的。例例1.3 用用const定义常量使用示例。定义常量使用示例。#include / 编译预处理命令编译预处理命令using namespace std;/ 使用命名空间使用命名空间std int main()/ 主函数主函数main()const float PI = 3.14159; / 定义常量定义常量PIfloat r, s;/ 定义变量定义变量cout r;/ 输入半径输入半径rs = PI * r * r;/ 计算面
18、积计算面积cout 面积面积: s endl;/ 输出面积输出面积system(PAUSE);/ 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统1.3.3 函数重载函数重载 C+允许在同一作用域内定义多个同名函数,但允许在同一作用域内定义多个同名函数,但要求这些函数要求这些函数参数的类型参数的类型或或个数个数不相同。这个功不相同。这个功能称为能称为函数重载函数重载 在同一个在同一个作用域内作用域内,函数名相同,参数的类型或,函数名相同,参数的类型或个数不同的函数称为个数不同的函数称为重载函数重载函数。 重载函数重载函数的形参个数或类型必须至少
19、有其中之一的形参个数或类型必须至少有其中之一不同,不允许参数个数和类型都相同而不同,不允许参数个数和类型都相同而只有返回只有返回值类型不同值类型不同,这是由于系统,这是由于系统无法无法从函数的调用形从函数的调用形式判断与哪一个重载函数相式判断与哪一个重载函数相匹配匹配。 例例1.4 求求2个数中最小值(分别考虑整数、浮点数的情况)。个数中最小值(分别考虑整数、浮点数的情况)。int Min(int a, int b)/ 求求2个整数的最小值个整数的最小值return a b ? a : b;/ 返回返回a,b的最小值的最小值float Min(float a, float b)/ 求求2个浮点
20、数的最小值个浮点数的最小值return a b ? a : b;/ 返回返回a,b的最小值的最小值int main()/ 主函数主函数main()int a, b;/ 定义整型变量定义整型变量float x, y;/ 定义浮点型变量定义浮点型变量cout a b;/ 输入输入a,bcout a , b 的最小值为的最小值为 Min(a, b) endl;/ 输出输出a,b的最小值的最小值,调用调用“int Min(int a, int b)”cout x y;/ 输入输入x,ycout x , y 的最小值为的最小值为 Min(x, y) endl;/ 输出输出x,y的最小值的最小值,调用调用
21、“float Min(float a, float b)”system(PAUSE);/ 调用库函数调用库函数system( ),输出系统提示信息,输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统例例1.5 用重载函数实现分别求用重载函数实现分别求2个整数或个整数或3个整数中的最小者个整数中的最小者。int Min(int a, int b)/ 求求2个整数的最小值个整数的最小值return a b ? a : b;/ 返回返回a,b的最小值的最小值int Min(int a, int b, int c)/ 求求3个整数的最小值个整数的最小值int t = a
22、 b ? a : b;/ a,b的最小值的最小值t = t c ? t : c;/ t,c的最小值的最小值return t;/ 返回返回a,b,c的最小值的最小值int main()/ 主函数主函数main()int a, b, c;/ 定义整型变量定义整型变量cout a b c;/ 输入输入a,b,c cout a “,” b “的最小值为的最小值为” Min(a, b) endl;/ 输出输出a,b的最小值的最小值,调用调用“int Min(int a, int b)”cout a , b , c 的最小值为的最小值为 Min(a, b, c) endl;/ 输出输出a,b,c的最小的最
23、小值值,调用调用“int Min(int a, int b, int c)”system(PAUSE);/ 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统1.3.4 有默认参数的函数有默认参数的函数在在C语言中,在函数调用时形参从实参获得参数值,语言中,在函数调用时形参从实参获得参数值,所以实参的个数应与形参相同。有时多次调用同一所以实参的个数应与形参相同。有时多次调用同一函数时使用函数时使用相同的实参值相同的实参值,C+允许给形参提供允许给形参提供默默认值认值,这样形参就不一定要从实参取值了。如有一,这样形参就不一定要从实参取值了。如有一函
24、数声明:函数声明:float Area(float r = 1.6); / 有默认值的函数声明有默认值的函数声明上面的函数声明指定参数上面的函数声明指定参数r的默认值为的默认值为1.6,如果在,如果在调用此函数时无实参,则参数调用此函数时无实参,则参数r的值为的值为1.6,例如:,例如: s = Area();/ 等价于等价于Area(1.6)有默认参数的函数有默认参数的函数默认参数应在函数名第一次出现时指定。默认参数应在函数名第一次出现时指定。默认参数必须是函数参数表中最右边默认参数必须是函数参数表中最右边(尾部尾部)的参数。例如:的参数。例如:float Volume(float l =
25、10.0, float w = 8.0, float h);/ 错误错误float Volume(float l = 10.0, float w = 8.0, float h = 6.0);/ 正确正确对于上面正确的函数声明,可采用如下形式的函数调用:对于上面正确的函数声明,可采用如下形式的函数调用:v = Volume(10.1, 8.2, 6.8);/ 形参值全从实参得到形参值全从实参得到,l=10.1,w=8.2,h=6.8v = Volume(10.1, 8.2);/ 最后最后1个形参的值取默认值个形参的值取默认值,l=10.1,w=8.2,h=6.0v = Volume(10.1);
26、/ 最后最后2个形参的值取默认值个形参的值取默认值,l=10.1,w=8.0,h=6.0v = Volume();/ 形参的值全取默认值形参的值全取默认值,l=10.0,w=8.0,h=6.0例例1.6 函数默认参数示例。函数默认参数示例。void Show(char str1, char str2 = , char str3 = );/ 在在声明函数时给出默认值声明函数时给出默认值int main()/ 主函数主函数main()Show(你好你好!);/ str1值取值取你好你好!,str2与与str3取取默认值默认值Show(你好你好, 欢迎学习欢迎学习C+!);/ str1值值你好你好,
27、str2取取欢迎学习欢迎学习C+!,str3取取默认值默认值Show(你好你好, , 欢迎学习欢迎学习C+!);/ str1值值你好你好,str2取取,str3取值取值欢迎学习欢迎学习C+!system(PAUSE); / 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统void Show(char str1, char str2, char str3)cout str1 str2 str3 endl;/ 输出输出str1,str2,str31.3.5 引用的概念引用的概念 建立建立“引用引用”的作用是为一个变量起另一个名字,对一个的作用是为一
28、个变量起另一个名字,对一个变量的变量的“引用引用”的所有操作,实际上都是对其所代表的的所有操作,实际上都是对其所代表的(原来的)变量的操作(原来的)变量的操作 设有一个变量设有一个变量x,要给它起一个别名,要给它起一个别名y,可以这样写:,可以这样写:float x; / 定义变量定义变量xfloat &y = x;/ 声明声明y是一个浮点型变量的引用变量,它被初始化为是一个浮点型变量的引用变量,它被初始化为x声明后,使用声明后,使用x或或y代表同一变量。在上述声明中,代表同一变量。在上述声明中,&是是“引引用声明符用声明符” 对变量声明一个引用,并不另开辟内存单元,对变量声明
29、一个引用,并不另开辟内存单元,x和和y都代表都代表相同一变量存储单元。相同一变量存储单元。 引用的概念引用的概念 在声明一个引用时,必须同时使之初始化在声明一个引用时,必须同时使之初始化 在函数中声明一个变量的引用后,在函数执行期间,该在函数中声明一个变量的引用后,在函数执行期间,该引用一直与其代表的变量相联系,不能再作为其他变量引用一直与其代表的变量相联系,不能再作为其他变量的别名。例如:的别名。例如:int a, b;/ 定义整型变量定义整型变量a,bint &c = a;/ 使使c成为变量成为变量a的引用(别名)的引用(别名)int &c = b;/ 又使又使c成为变量成
30、为变量b的引用(别名)是错误的的引用(别名)是错误的例例1.7 变量的引用使用示例。变量的引用使用示例。int main()/ 主函数主函数main()int a = 10;/ 定义变量定义变量int &b = a;/ b为为a的引用的引用,a与与b代表相同变量存储单元代表相同变量存储单元b = b + 2;/ b的值自加的值自加2,a与与b的值都为的值都为12cout a的地址的地址: &a endl;/ 输出输出a的地址的地址cout b的地址的地址: &b endl;/ 输出输出b的地址的地址cout a的值的值: a endl;/ 输出输出a的值的值cout b
31、的值的值: b endl;/ 输出输出a的值的值system(PAUSE);/ 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统程序运行时屏幕输出参考如下:程序运行时屏幕输出参考如下:a的地址的地址:0013FF7Cb的地址的地址:0013FF7Ca的值的值:12b的值的值:12请按任意键继续请按任意键继续. . .将引用作为函数参数将引用作为函数参数 C+增加增加“引用引用”的主要目的是利用它作为的主要目的是利用它作为函数参数,以便扩充函数传递数据的功能。函数参数,以便扩充函数传递数据的功能。 在在C语言中,将变量名作为实参。这时将语言中,将
32、变量名作为实参。这时将变变量的值量的值传递给传递给形参形参。传递是。传递是单向的单向的,在调,在调用函数时,形参和实参不是同一个存储单用函数时,形参和实参不是同一个存储单元。在执行函数期间元。在执行函数期间形参值形参值发生发生变化变化并并不不传回给实参传回给实参。例例1.8 以变量为实参不能实现交换变量的值的。以变量为实参不能实现交换变量的值的。void Swap(int a, int b)/ 不能实现交换实参变量的值不能实现交换实参变量的值int t = a; a = b; b = t;/ 循环赋值交换循环赋值交换a,b的值的值int main()/ 主函数主函数main()int m =
33、6, n = 8;/ 定义整型变量定义整型变量Swap(m, n);/ 调用函数调用函数Swap()cout m n endl;/ 输出输出m,n的值的值system(PAUSE); / 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统在在C程序中可以用指针传递变量地址的方法。使形参得到一个变量的地址,程序中可以用指针传递变量地址的方法。使形参得到一个变量的地址,这时形参指针变量指向实参变量单元。这时形参指针变量指向实参变量单元。例例1.9 用指针变量作形参,实现两个变量的值互换。用指针变量作形参,实现两个变量的值互换。void Swap(in
34、t *p, int *q)/ 实现交换实现交换*p与与*q的值的值int t = *p; *p = *q; *q = t;/ 循环赋值交换循环赋值交换*p与与*q的值的值int main()/ 主函数主函数main()int m = 6, n = 8;/ 定义整型变量定义整型变量Swap(&m, &n);/ 调用函数调用函数Swap()cout m n endl; / 输出输出m,n的值的值system(PAUSE);/ 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统在在C+中,把变量的引用作为函数形参,由于形参是实参的引用,
35、也就是中,把变量的引用作为函数形参,由于形参是实参的引用,也就是形参是实参的别名,这样对形参的操作等价于对实参的操作。形参是实参的别名,这样对形参的操作等价于对实参的操作。例例1.10 利用引用形参实现交换两个变量的值。利用引用形参实现交换两个变量的值。void Swap(int &a, int &b)/ 实现交换实参变量的值实现交换实参变量的值int t = a; a = b; b = t;/ 循环赋值交换循环赋值交换a与与b的值的值int main()/ 主函数主函数main()int m = 6, n = 8;/ 定义整型变量定义整型变量Swap(m, n);/ 调用函数
36、调用函数Swap()cout m n endl; / 输出输出m,n的值的值system(PAUSE);/ 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统常引用常引用 常引用就是用常引用就是用const对引用加以限定,表示不允许改对引用加以限定,表示不允许改变该引用的值。例如:变该引用的值。例如:int a = 6;/ 定义整型变量定义整型变量a,初值为,初值为6const int &b = a; / 声明常引用,不允许改变声明常引用,不允许改变b的值的值b = 8;/ 改变常引用改变常引用b的值,错误的值,错误a = 8;/ 改变改
37、变a的值,正确的值,正确 常引用通常用作函数形参常引用通常用作函数形参,这样能保证形参的值不被,这样能保证形参的值不被改变改变例例1.11 常引用形参示例。常引用形参示例。struct Personchar name20;/ 姓名姓名char sex3;/ 性别性别;void Show(const Person &p)cout 姓名姓名: endl;/ 输出姓名输出姓名cout 性别性别: p.sex endl;/ 输出性别输出性别 int main()/ 主函数主函数main()Person p = 李倩李倩, 女女;/ 定义结构体变量定义结构体变量Show(p);/
38、输出输出psystem(PAUSE);/ 输出系统提示信息输出系统提示信息return 0; / 返回值返回值0, 返回操作系统返回操作系统在程序中,用结构名在程序中,用结构名Person作为类型来定义变量作为类型来定义变量p,在,在C语言中,不能用结构名来定义结构变量名,必须在结语言中,不能用结构名来定义结构变量名,必须在结构名前加构名前加struct才能定义结构变量,即应采用如下形式才能定义结构变量,即应采用如下形式定义:定义:structPerson p = 李倩李倩, 女女;/ 定义结构体变量定义结构体变量常引用常引用 可以用常量或表达式对常引用进行初始化,例如:可以用常量或表达式对常
39、引用进行初始化,例如:int a = 6;/ 定义变量定义变量const int &b = a + 3;/ 正确正确,可以用表达式对常引用进行初始化可以用表达式对常引用进行初始化int &c = a + 3;/ 错误错误,对非常引用只能用变量进行初始化对非常引用只能用变量进行初始化 用用表达式表达式对对常引用常引用进行进行初始化初始化时,系统将生成一个时,系统将生成一个临时变临时变量量,用于存储表达式的值,引用是临时变量的别名。例如,用于存储表达式的值,引用是临时变量的别名。例如将将“const int &b = a + 3;”变换为:变换为:int tem = a +
40、 4;/ 将表达式的值存放在临时变量将表达式的值存放在临时变量tem中中const int &b = tem;/ 声明声明b是是tem的引用的引用(别名别名)1.3.6 动态分配运算符动态分配运算符new C+语言使用能完成动态内存分配和初始化工作的运算符语言使用能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符以及一个能完成清理与释放内存工作的运算符delete来管理动态来管理动态内存。例如:内存。例如:new int;/ 分配一个存放整数的空间,返回一个指向整型数据的指针分配一个存放整数的空间,返回一个指向整型数据的指针new int(6); /
41、 分配一个存放整数的空间,并且初始化为分配一个存放整数的空间,并且初始化为6new char16;/ 分配一个存放字符数组的空间,该数组有分配一个存放字符数组的空间,该数组有16个元素个元素 new运算符使用的一般格式为运算符使用的一般格式为new 类型类型;/分配存储单个数据的空间时不指定初始值分配存储单个数据的空间时不指定初始值new 类型类型(初值初值);/分配单个数据的存储空间时将指定初始值分配单个数据的存储空间时将指定初始值new 类型类型元素个数元素个数;/分配数组存储空间时不指定初始值分配数组存储空间时不指定初始值 用用new分配存储空间时,如果分配失败,返回空指针分配存储空间时
42、,如果分配失败,返回空指针NULL,分,分配成功将返回非空指针。配成功将返回非空指针。释放内存的运算符释放内存的运算符delete delete运算符使用的一般格式为运算符使用的一般格式为delete 指针变量指针变量;delete 指针变量指针变量; 第第1种格式释放用种格式释放用new分配的单个数据的存储空间,第分配的单个数据的存储空间,第2种格式释放用种格式释放用new分配的数组存储空间。分配的数组存储空间。例例1.12 new/delete运算符使用示例。运算符使用示例。int main()/ 主函数主函数main()int *p;/ 定义整型指针定义整型指针p = new int(1
43、6);/ 分配单个整数的存储空间分配单个整数的存储空间,并初始化为并初始化为16if (p = NULL)cout 分配存储空间失败分配存储空间失败! endl;exit(1);/ 退出程序的运行退出程序的运行,并向操作系统返回并向操作系统返回1cout *p endl;/ 输出输出p所指向的动态存储空间的值所指向的动态存储空间的值16delete p;/ 释放存储空间释放存储空间p = new int;/ 分配单个整数的存储空间分配单个整数的存储空间if (p = NULL)cout 分配存储空间失败分配存储空间失败! endl;exit(2);/ 退出程序的运行退出程序的运行,并向操作系统返回并向操作系统返回2*p = 8;/ 将将p指向的动态存储空间赋值为指向的动态存储空间赋
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 墩、台身和盖梁工程现场质量检验报告单(五)
- 智能交通管理平台开发协议
- 办公用品采购预算与实际使用对比表格
- 专业资料出版合作协议
- 水利水电工程施工承包协议
- 企业品牌授权使用协议书
- 小学生体育运动启蒙故事读后感
- 太阳能光伏系统安装维护合同
- 2024-2025学年高二数学湘教版选择性必修第二册教学课件 第2章-2.4空间向量在立体几何中的应用-2.4.3 向量与夹角
- 水系统基础知识培训课件
- 2025湖北省建筑安全员考试题库及答案
- 2025年《中央一号文件》参考试题库资料100题及答案(含单选、多选、判断题)
- 《影视照明技术》课件:照亮影视作品的灵魂
- 2023安徽省公务员考试【申论A卷、申论C卷、行测B类】 三套 真题及答案
- 《酒店前厅设计》课件
- 老年医学科建设与发展
- 2025年贵州能矿锰业集团有限公司招聘笔试参考题库含答案解析
- 公司积分制管理实施方案
- 2025年部编版道德与法治小学三年级下册全册教案(含教学计划)
- 2023河南中医药大学学士学位英语题
- 中等职业学校英语教学大纲词汇表本表共收词2200个左右含
评论
0/150
提交评论