C++ 程序设计 第2章.ppt_第1页
C++ 程序设计 第2章.ppt_第2页
C++ 程序设计 第2章.ppt_第3页
C++ 程序设计 第2章.ppt_第4页
C++ 程序设计 第2章.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+程序设计,第2章 C+基础知识,第2章 C+基础知识,本章学习要点,从C程序到C+程序的发展历程 简单的C+程序 C+的输入输出、数据类型、函数及指针 C+的常变量、引用、名字空间、字符串变量 C+程序的编写和实现,第2章 C+基础知识,本章学习目标,了解从C程序到C+程序的发展历程 对简单的C+程序有整体的感性认识 掌握C+对C的扩充 掌握C+的输入输出、数据类型、函数及指针 掌握C+的常变量、引用、名字空间、字符串变量 熟悉C+程序的编写和实现流程,2.1 从C到C+,C到C+的发展历程,C+3.0,C+1.0,带类的C,89年,增加类的多继承,91年,增加模板,增加异常处理、名字空间

2、、运行时类型识别,97年,成为标准,2.2 简单C+程序,通过简单的C+例子认识C+程序,【例2-1】在屏幕上输出一行字符“Hello C+!”。 /= #include /包含头文件命令 using namespace std;/使用名字空间std int main() coutHello C+!endl; /输出字符串到屏幕 return 0; /main函数返回0至操作系统 /=,注意:标准C+程序和C程序的不同 : main函数的返回值为整型 使用cout输出及需要用到的头文件iostream 名字空间,2.2 简单C+程序,C+的函数和C语言的函数非常相似 函数的使用仍然需要先声明后

3、使用。如果函数定义在函数调用之后,则必须在前面声明函数原型,【例2-2】通过函数求两个整数a和b的和。 /= #include /包含头文件命令 using namespace std;/使用名字空间std int sum(int x, int y) return x + y; /求和的函数 int main() int a,b; /定义两个变量a和b coutab;/等待用户从键盘输入数据 couta+b=sum(a, b)endl;/输出结果信息至屏幕 return 0;/main函数返回0至操作系统 /=,2.2 简单C+程序,【例2-3】声明一个关于人的类Person,人的信息包括姓名

4、、性别、年龄, 人可以输入自己的信息,也可以显示自己的信息。 #include /包含头文件命令 using namespace std;/使用名字空间std class Person/类的声明 public:/以下为类的公用成员函数 void SetInfo()/公用成员函数SetInfo coutnamesexage; /输入数据至私有数据成员 void Show()/公用成员函数Show cout name : name; /输出私有成员name的值 cout sex: sex;/输出私有成员sex的值 cout age: ageendl; /输出私有成员age的值 private: /

5、以下为类的私有数据成员 char name20;/私有数据成员name char sex2;/私有数据成员sex int age; /私有数据成员age ;/类声明结束,此处必须有分号,2.2 简单C+程序,int main()/main函数 Person person1,person2; /定义Person类的两个对象person1,person2 person1.SetInfo(); /对象person1信息输入 person2.SetInfo(); /对象person2信息输入 person1.Show(); /对象person1信息输出 person2.Show(); /对象perso

6、n2信息输出 return 0; /main函数返回0至操作系统 ,在main函数中创建例2-3中Person类的对象,并调用对象的方法。,注意: 类的定义和对象的使用的语法形式 类中的成员分为数据成员和成员函数,成员的可见性分为公用和私有 类的概念的理解:类是一种用户自定义数据类型 对象的理解:对象是类类型的变量,2.3 C+对C的扩充,在输入输出方面的扩充 对数据类型的扩充 常变量 在指针方面的扩充 引用的概念 在函数方面的扩充 名字空间的概念 字符串变量,2.3.1 C+的输入输出,C语言输入输出的实现 通过输入输出库函数实现 C语言的输入输出存在着格式复杂、无法保证安全性、无法对自定义

7、类型整体输入输出等缺点 C+对C输入输出的扩充 C+的输入/输出(I/O)流类库 “流”的思想 cout、cin对象,、运算符,2.3.2 数据类型的扩展,基本 类型,空类型,引用 类型,指针 类型,构造 类型,C+数据类型,整型、字符型 浮点型 布尔型,枚举、数组 结构体、共用体 类,2.3.3 用const定义常变量,直接常量和符号常量 符号常量的缺点 运行时不分配内存单元 符号常量没有类型,在编译时不进行类型检查 替换后的表达式和预想的表达式是否一致 为了使常量也能像变量那样进行类型检查,C+提供了用const定义常变量的方法 定义常变量的语法: const 类型 变量名;,2.3.3

8、用const定义常变量,【例2-4】利用常变量计算圆的面积。 /= #include using namespace std; int main() const float PI = 3.14; /定义常变量 float radius = 0; coutradius; coutThe area of circle is: PI*radius*radiusendl; return 0; /=,注意const的位置,一般见到的const的位置可能在类型的前面,但是const也可以在变量名前面,并且两者的含义完全相同。,2.3.4 指针,指针的概念 指针是一个重要概念,如果使用得当可以使程序高效、简

9、洁、紧凑。如果对指针掌握不牢固,编程则会出现意想不到的错误 指针是内存单元的地址 经常所讲的指针是指针变量的简称,是用来存放指针(地址)的变量。 本节重点讨论C+中使用指针需要注意的地方,2.3.4.1 指针与0,空指针 空指针表示“未分配”或者“尚未指向任何地方”的指针 空指针一般用来判断内存分配是否成功 注意:“空指针”与“野指针”的区别 在指针上下文中的常数0被编译成空指针 程序员更常使用符号常量NULL来表示空指针,2.3.4.1 指针与0,【例2-5】指针和0 /= #include using namespace std; int main() int *p = 0; /定义空指针

10、p int *q; /定义野指针q int x = 100; /定义整型变量x并初始化为100 /*p = 50; /若执行则编译出错,不能使用空指针 *q = 50; /编译通过,但不知把50写到何处 p = q = /输出变量x的值 /=,注意编程时养成定义指针时初始化为空指针,使用指针时判断是否为空指针的好习惯,可以减少程序中指针的许多错误。,2.3.4.2 指针与const,【例2-6】指向const变量的指针。 /= #include using namespace std; int main() const int *p = NULL; /定义指向const变量的指针p const

11、 int a = 10 ; /定义常变量a p = /=,通过本例可以看到可以改变指向const变量的指针的指向,但是不能通过指针修改指针指向单元内容,2.3.4.2 指针与const,通过本例可以看到可以改变const指针指向单元的内容,但是不能改变const指针的指向。,【例2-7】const指针。 /= #include using namespace std; int main() int a = 10 ; /定义普通变量a int b = 100; /定义普通变量b int * const p = /=,2.3.4.2 指针与const,对于指向const变量的const指针,既不能

12、改变指针指向单元的内容,也不能改变指针的指向。,【例2-8】指向const变量的const指针。 /= #include using namespace std; int main() int a = 10 ; int b = 100; const int * const p = /=,2.3.4.2 指针与const,小结指针和const的关系比较复杂,const有两个位置,可形成三种指针: 1.只在“*”之前有const的指针,称为指向const变量的指针; 2.只在“*”之后有const的指针,称为const指针; 3.“*”前后都有const的指针,称为指向const变量的const指

13、针。,2.3.4.3 void指针,void在作为函数类型和参数类型时为空类型,表示没有返回值或参数。 void修饰指针时称为“无类型指针”,表示该指针可以指向任意类型的变量。 虽然void指针可以指向任意类型的数据,但是在使用void指针时必须对其进行强制类型转换成它所指向单元的实际类型,然后才可以使用,2.3.4.3 void指针,【例2-9】void指针的声明与使用。 /= #include using namespace std; int main() int x = 100; void *p = /=,2.3.4.3 void指针,为什么要使用void指针 因为void指针可以指向任

14、意类型的数据,所以使用void指针时把void指针所指向的数据给抽象化了,这样可以增加程序的通用性 使用void指针的两个例子,void * memcpy(void *dest, const void *src, size_t len);,void * malloc(unsigned int size);,2.3.4.4 new和delete,C语言的动态内存管理 malloc()和free()函数 主要缺点 函数的返回值是void*类型 分配内存单元时根据参数size的值来分配,无法检查错误 分配到的内存单元无法初始化 C+中使用new和delete运算进行动态内存管理,2.3.4.4 new和delete,【例2-11】使用new和delete动态管理内存单元。 /= #include using namespace std; int main() int *p = NULL; /定义整型指针p p = new int; /用new申请可以存放一个整型数据的内存单元 cout*p = *pendl; /输出指针p指向单元的内容 delete p; /delete释放指针p指向内存单元 return 0; /=,2.3.4.4 new和delete,申请内存空

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论