C语言试题、学习、考试大全(1).ppt_第1页
C语言试题、学习、考试大全(1).ppt_第2页
C语言试题、学习、考试大全(1).ppt_第3页
C语言试题、学习、考试大全(1).ppt_第4页
C语言试题、学习、考试大全(1).ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

C+C+程序设计基础程序设计基础 福州大学数学与计算机科学学院福州大学数学与计算机科学学院 吴英杰吴英杰 *1福州大学数学与计算机科学学院 C+语言概述 面向对象的程序设计语言 C+支持数据封装 C+类中包含私有、公有和保护成员 C+通过发送消息来处理对象 C+中允许友元破坏封装性 C+允许函数名和运算符重载 C+支持继承性 C+支持动态联编 在C+中,结构可作为一种特殊的类,它虽然可以 包含函数,但它没有私有或保护的成员。 在C+中,类是支持数据封装的工具,对象则是数 据封装的实现。类是类型,是对象的抽象,对象是 类的具体实例。一个类可以有多个对象,每个对象 都有自己的存储单元,而类不占存储单元。 C+中类是数据和函数的封装体,它提供一种数据 访问严格控制的机制,数据被隐藏在封装体中,该 封装体通过操作接口与外界交换信息。 友元可以是在类外定义的函数,也可以是在类外 定义的整个类。友元可以访问类的私有成员。 面向对象的程序设计的四大特征: 抽象、封装、 继承 、 多态 。 Date2福州大学数学与计算机科学学院 C+与C语言的关系: C语言是C+的一个子集,C+包含了C语言的全部内容 。 C+保持与C语言的兼容 C+对C语言作了很多改进 C+与C语言的本质差别在于C+是面向对象的,而C 语言是面向过程的。 (1) 增加了一些新的运算符,如 :, new, delete, -* 等; (2) 改进了类型系统,增加了安全性; (3) 引进了引用的概念,使用引用作函数参数带来了很大方 便; (4) 允许函数重载,允许设置缺省参数,提高了编程的灵活 性; (5) 引进内联函数,提高了程序效率; (6) 可根据需要随时对变量进行说明。 面向过程的程序设计将数据和对数据的操作分离,程序是 由一个个的函数组成的,面向对象的程序设计将数据和操 作封装在一起,程序是由一个个对象组成的,对象之间通 过接口进行通信,它能够较好地支持程序代码的复用。 Date3福州大学数学与计算机科学学院 C+数据操作基础 2.1 C+程序进行输入和输出的操作方法 #include int main( ) int x, y; /定义两个整型变量 cin x y ; /键盘输入变量值 cout ”和输出操作符“= 0 ) ? a : -a 注意:表达式1、2、3的数据类型不能是 void 类型。 Date8福州大学数学与计算机科学学院 switch ( 变量名 ) case 值1 : 语句序列1 ; break ; case 值 2 : 语句序列2 ; break ; default : 语句序列 n ; Date9福州大学数学与计算机科学学院 2.2.2 循环语句 for 循环: for ( exp1; exp2; exp3) statement;. while 循环: while ( expression) do while 循环: do statement; . while (expression); 三种循环都可以嵌套。 Date10福州大学数学与计算机科学学院 for ( exp1; exp2; exp3) statement;. 等价于: exp1 ; while ( exp2 ) statement ; exp3 ; 例: int sum = 0 ; for ( int i = 1 ; i void Make2DArray(Type* for (int i=0;i void Delete2DArray(Type* i void main() int b = 10; double(b); cout 数据成员 指针名 - 成员函数 例:CPerson *pWang; pWang - age = 30 ; pWang -PrintAge( ); 类和对象的关系就如同整型 int 与整型变量 i 之间的 关系。 Date32福州大学数学与计算机科学学院 3.3 类的成员 3.3.1 构造函数 构造函数是一个特殊的类成员函数,用于初始化类变量 或分配内存空间。当用类定义一个对象时,自动调用构造 函数,使对象保持一个确定的状态。 1. 构造函数的声明 class CExample int I ; public: CExample( ) ; ; Date33福州大学数学与计算机科学学院 2. 构造函数的特点 (1) 构造函数与类必须具有相同的名字。 例:class CExample CExample ( ) ; CExample ( int i ) ; CExample ( int x , int y ) ; private : int member1, member2 ; ; (2) 创建对象时自动执行构造函数,构造函数不能在程 序中被显式调用。 (3)构造函数不需要函数类型,不能被继承。 (4)构造函数可以接受参数并能够重载。 Date34福州大学数学与计算机科学学院 CExample : CExample ( int i ) member1 = i ; member2 = 0 ; int main( ) CExample ex1; CExample ex2(1); CExample ex3( 2, 3 ); CExample : CExample ( ) member1 = 0; member2 = 0; CExample : CExample ( int x , int y ) member1 = x ; member2 = y ; Date35福州大学数学与计算机科学学院 (5) 若程序没有为一个类定义任何构造函数,则编译器 生成一个不带参数的公有构造函数,这个构造函数 什么也不做,称为缺省构造函数。 例:CExample : CExample 3.3.2 析构函数 析构函数与构造函数功能相反,也是类成员函数, 通常用于释放已分配的内存空间或完成对象被清除前的 一些清理工作。 Date36福州大学数学与计算机科学学院 class CExample public: CExample( ); void Print ( ); CExample( ); ; 析构函数的特点: 1.与构造函数具有相同的名字,前面必须加上“” 符号。 2.析构函数没有函数类型,不能被继承。 Date37福州大学数学与计算机科学学院 3.3.3 内联函数 在函数定义前加上一个inline前缀,该函数就被定义成 一个内联函数。 3.析构函数不能带有参数,而且不可以重载。 4.析构函数在 结束时被自动调用。 对于内联函数,编译时在所有调用该函数的地方将装 入实际的函数代码。 内联函数的声明必须出现在对它的每个调用之前。 Date38福州大学数学与计算机科学学院 3.3.5 对象与成员函数 成员函数的参数和返回值不仅可以是整型、字符型、 指针类型等,也可以把对象作为参数和返回值。 class CPoint float x, y ; public: CPoint ( float a, float b ); CPoint Add ( CPoint A ); Date39福州大学数学与计算机科学学院 CPoint : CPoint ( float a, float b ) x = a ; y = b ; CPoint CPoint : Add ( CPoint A ) CPoint B; B.x = x + A.x ; B.y = y + A.y; return B; Date40福州大学数学与计算机科学学院 3.4 this指针 this指针是一个隐含于每个类的成员函数中的特殊指 针。 this用于指向以该成员函数所属类定义的对象。 当某个对象调用成员函数时,成员函数的this指针便 指向该对象。因此,当不同的对象引用同一个成员函数 时,编译器就依据成员函数 this 指针指向的不同对象来 确定引用哪一个对象的数据成员。 Date41福州大学数学与计算机科学学院 例: #include class A public: A( ) a=b=0; A(int i, int j ) a=i;b=j; void copy(A void print( ) cout void swap( int x, int y ) int temp ; temp = x ; x = y ; y = temp ; (4)引用一旦被初始化,就不能被改变,也不能更新引用 , 使其标识另一个对象。 Date49福州大学数学与计算机科学学院 运行结果: a = 1 b = 2 a = 1 b = 2 main ( ) int a = 1, b = 2 ; cout y ? x : y; double max(double x, double y) return xy ? x : y; template T max(T x, T y) return xy ? x : y; int i=max(1,2); double x=max(1.0,2.0); Date51福州大学数学与计算机科学学院 3.9 运算符重载 为用户定义的数据类型重载运算符。 bool Rectangle : operator = (const Rectangle if(x1=s.x1) else return false; 经重载运算符 = 后,即可用运算符 = 来判定 2个Rectangle对象是否相同。 Date52福州大学数学与计算机科学学院 3.10 继承 w 通过继承机制,可以利用已有的数据类型来定义新的数据类 型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时 拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称 为父类。由已存在的类派生出的新类称为派生类,又称为子类。 在C+语言中,一个派生类可以从一个基类派生,也可以从 多个基类派生。从一个基类派生的继承称为单继承;从多个基类 派生的继承称为多继承。 派生类的定义格式 单继承的定义格式如下: class : ; w多继承的定义格式如下: w class :, w ; Date53福州大学数学与计算机科学学院 w派生类的三种继承方式 w 公有继承(public)、私有继承(private)、保护继承(protected)是 常用的三种继承方式。 w 1. 公有继承(public) w 公有继承的特点是基类的公有成员和保护成员作为派生类的 成员时,它们都保持原有的状态,而基类的私有成员仍然是私有 的。 w 2. 私有继承(private) w 私有继承的特点是基类的公有成员和保护成员都作为派生类 的私有成员,并且不能被这个派生类的子类所访问。 w 3. 保护继承(protected) w 保护继承的特点是基类的所有公有成员和保护成员都成为派 生类的保护成员,并且只能被它的派生类成员函数或友元访问, 基类的私有成员仍然是私有的。 Date54福州大学数学与计算机科学学院 w#include wusing namespace std; wclass A w wpublic: wvoid p1()cout“A“endl; wprivate: wvoid p2()cout“B“endl; wprotected

温馨提示

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

评论

0/150

提交评论