台州学院计算机系面向对象程序设计(C++)_第1页
台州学院计算机系面向对象程序设计(C++)_第2页
台州学院计算机系面向对象程序设计(C++)_第3页
台州学院计算机系面向对象程序设计(C++)_第4页
台州学院计算机系面向对象程序设计(C++)_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1、台州学院计算机系面向对象程序设计(C+)1题型:题型:l选择:选择:10题题2分,共分,共20分分l填空:填空:10题题2分,共分,共20分分l阅读程序阅读程序(4个个):10空空2分,共分,共20分分l问答题:问答题:2题题10分,共分,共20分分l程序设计题:程序设计题:1题,共题,共20分分台州学院计算机系面向对象程序设计(C+)2 C+的新特性的新特性 简单的输入输出简单的输入输出 带默认参数的函数带默认参数的函数/内联函数内联函数/重载函数重载函数 引用引用 const说明符说明符 动态分配内存(动态分配内存(new/delete) 面向对象的三大特性:面向对象的三大特性: 1. 封

2、装:将有关的数据、操作代码封装成类封装:将有关的数据、操作代码封装成类 2. 继承:保持已有类的特性而构造新类的过程继承:保持已有类的特性而构造新类的过程 3. 多态:在基类中声明成员函数为虚函数,根据需要在派多态:在基类中声明成员函数为虚函数,根据需要在派生类中重新定义与基类同名的成员。用基类指针或基类引生类中重新定义与基类同名的成员。用基类指针或基类引用来访问各派生类中的同名函数。实现一个接口,多种方用来访问各派生类中的同名函数。实现一个接口,多种方法法台州学院计算机系面向对象程序设计(C+)3 面向对象的三个主要特性:封装,继承,多态面向对象的三个主要特性:封装,继承,多态 熟悉熟悉VC

3、集成环境集成环境 熟悉简单熟悉简单C+程序的基本结构程序的基本结构台州学院计算机系面向对象程序设计(C+)4 各种数据类型及其在内存中所占用的字节数各种数据类型及其在内存中所占用的字节数 变量和常量变量和常量 常量:编译预处理命令和使用常量:编译预处理命令和使用const常量说明符常量说明符#define PI 3.14const float = 3.14; 各种运算符和表达式各种运算符和表达式 优先级优先级/结合律结合律 类型的自动转换和强制转换类型的自动转换和强制转换 sizeof,自增(减),条件等运算符,自增(减),条件等运算符台州学院计算机系面向对象程序设计(C+)5 选择结构选择结

4、构 循环结构循环结构 while do while for break/continue台州学院计算机系面向对象程序设计(C+)6 函数的定义和调用函数的定义和调用 函数原型说明函数原型说明 带默认参数的函数带默认参数的函数 有默认值的参数靠右面,参数传值顺序从左到右有默认值的参数靠右面,参数传值顺序从左到右 重载和默认参数同时使用的歧义性,一般两者不能同时使用重载和默认参数同时使用的歧义性,一般两者不能同时使用 内联函数内联函数 重载函数重载函数台州学院计算机系面向对象程序设计(C+)7下面参数有默认值的函数,格式正下面参数有默认值的函数,格式正确的是?确的是?1. int add(int

5、a = 0, int b,int c) return a+b+c; 2. int add(int a, int b=0,int c)return a+b+c; 3. int add(int a, int b,int c=0)return a+b+c;4. int add(int a = 0, int b=0,int c)return a+b+c;5. int add(int a = 0, int b,int c=0)return a+b+c;6. int add(int a, int b=0,int c=0)return a+b+c; 台州学院计算机系面向对象程序设计(C+)81. int a

6、dd (int a, int b); 与与 void add (int a, int b);2. int abb (int a, int b); 与与 void add (int a, int b);3. int add (int a, int b); 与与 int add (int a);4. int add (int a, float b); 与与 int add (float a, int b);5. int add (int a, int b); 与与 float add (float a, float b);6. int add (int a, int b); 与与 int add

7、(int x, int y); 下面是重载函数的是?下面是重载函数的是?台州学院计算机系面向对象程序设计(C+)9 下面的函数声明中,为下面的函数声明中,为void BC(int a,int b); 的重载的重载函数的是函数的是 A. int BC(int a,int b); B. void BC(int a,char b); C. float BC(int a,int b,int c=0); D. void BC(int a,int b=0); 台州学院计算机系面向对象程序设计(C+)10 作用域作用域 块块/局部局部 函数原型函数原型 文件文件 函数函数 类类 存储类存储类 自动自动 寄存

8、器寄存器 静态静态 外部外部重点:重点:局部变量局部变量/ /全局变量全局变量/ /静态变量静态变量台州学院计算机系面向对象程序设计(C+)11 数组数组/指针指针/引用的定义及初始化引用的定义及初始化 数组与指针数组与指针 数组与函数数组与函数 数组作为函数的参数数组作为函数的参数 返回值为数组返回值为数组 指针与函数指针与函数 指针作为函数参数指针作为函数参数 返回值为指针返回值为指针 指向函数的指针变量指向函数的指针变量 指针与引用指针与引用 引用作为函数参数引用作为函数参数 返回值为引用返回值为引用台州学院计算机系面向对象程序设计(C+)12台州学院计算机系面向对象程序设计(C+)13

9、台州学院计算机系面向对象程序设计(C+)14台州学院计算机系面向对象程序设计(C+)15 const与指针与指针 指向常量的指针指向常量的指针: *p是常量,不能修改是常量,不能修改 const float *p; 或者或者 float const *p; 常指针:常指针:p是常量,必须初始化,不能修改是常量,必须初始化,不能修改 float a; float * const p = &a; 指向常量的常指针指向常量的常指针: *p和和p都是常量,不能修改都是常量,不能修改 float a; const float * const p = &a;台州学院计算机系面向对象程序设计

10、(C+)16 new与与delete类型类型 指针变量指针变量 new 类型类型(初值初值)delete 指针变量指针变量 or delete 指针变量指针变量例如:例如:char *p = new char ; delete p; int *p = new int6; delete p;台州学院计算机系面向对象程序设计(C+)17 动态分配内存的优点:用变量决定内存大小动态分配内存的优点:用变量决定内存大小char a5 ; / 定义包含定义包含5个元素的数组个元素的数组ad = 5; char arrd; / 错误错误, 数组大小必须是常量数组大小必须是常量char * p = new c

11、har 5;/ 动态开辟动态开辟5个个char内存内存int len = 5; char * p = new char len; / 正确正确台州学院计算机系面向对象程序设计(C+)18 类的定义及类成员的访问属性类的定义及类成员的访问属性 public: 类内、类外类内、类外 protected:类内、派生类类内、派生类 private:类内类内类内:类内成员,通常利用成员函数类内:类内成员,通常利用成员函数类外:通过对象名,指向对象的指针,对象的引用类外:通过对象名,指向对象的指针,对象的引用 构造函数和析构函数的定义和特点构造函数和析构函数的定义和特点 拷贝构造函数(拷贝构造函数(参数通

12、常为对象的常引用参数通常为对象的常引用)(深拷贝,浅拷贝)(深拷贝,浅拷贝) 静态成员:静态数据成员,静态成员函数静态成员:静态数据成员,静态成员函数 友元:友元类,友元函数友元:友元类,友元函数 this指针:指向调用成员函数的当前对象指针:指向调用成员函数的当前对象 对象作为函数参数的三种形式对象作为函数参数的三种形式 子对象:对象作为类成员(构造函数调用顺序)子对象:对象作为类成员(构造函数调用顺序)台州学院计算机系面向对象程序设计(C+)19 静态成员归本类所有,或者说是归本类所有对象所公有,并静态成员归本类所有,或者说是归本类所有对象所公有,并不属于某一个对象。不属于某一个对象。 静

13、态数据成员不属于某一个对象。只要它在类中定义了,即使不定义静态数据成员不属于某一个对象。只要它在类中定义了,即使不定义对象,也为静态数据成员分配空间,它可以被使用。对象,也为静态数据成员分配空间,它可以被使用。 静态数据成员只能在类体外初始化。形式为:静态数据成员只能在类体外初始化。形式为:数据类型数据类型 类名类名 静态数据成员名静态数据成员名=初值;初值;例如:例如: int A: num = 0; 静态成员函数并不属于某一对象,它与任何对象都无关,因此它没有静态成员函数并不属于某一对象,它与任何对象都无关,因此它没有this指针。指针。 在在C+程序中,静态成员函数主要用来访问静态数据成

14、员。程序中,静态成员函数主要用来访问静态数据成员。 静态数据成员和静态成员函数都可以用对象名访问,也可以用类名访静态数据成员和静态成员函数都可以用对象名访问,也可以用类名访问问台州学院计算机系面向对象程序设计(C+)20 友元:用友元:用friend声明友元,可以访问与其有好友关声明友元,可以访问与其有好友关系的类中的私有成员。系的类中的私有成员。 注意:注意:由于友元函数不是成员函数,没有由于友元函数不是成员函数,没有this指针,指针,所以在友元函数内要通过对象名、对象的引用名访所以在友元函数内要通过对象名、对象的引用名访问成员。对象或引用一般在友元函数的参数位置上问成员。对象或引用一般在

15、友元函数的参数位置上设置设置台州学院计算机系面向对象程序设计(C+)21台州学院计算机系面向对象程序设计(C+)22问题问题1:A aa; A 和和aa哪个占内存空间?占多大?哪个占内存空间?占多大?答:对象占内存,类型不占,所以答:对象占内存,类型不占,所以aa占内存,所占内存,所占内存大小等于所有数据成员大小,即:占内存大小等于所有数据成员大小,即:8个字个字节。节。台州学院计算机系面向对象程序设计(C+)23问题问题2:A aa; 调用构造函数吗?调用构造函数吗?答:由于答:由于A类中用户没有自己定义任何构造函数,类中用户没有自己定义任何构造函数,所以系统自动给所以系统自动给A类生成一个

16、无参、函数体为空类生成一个无参、函数体为空的构造函数。执行的构造函数。执行A aa时,系统会自动调用系统时,系统会自动调用系统给给A类生成的类生成的 A() 函数函数台州学院计算机系面向对象程序设计(C+)24问题问题3:A aa100; 调用几次构造函数?调用几次构造函数?答案:答案:100次,次,aa数组中每个元素都是数组中每个元素都是A类的对象,类的对象,即有即有100个个A类对象,每个对象调用一次构造函数,类对象,每个对象调用一次构造函数,共调用共调用100次。次。台州学院计算机系面向对象程序设计(C+)25问题问题4:将:将 A aa; 改为改为 A *p = new A; 此句调用

17、构造此句调用构造函数吗?函数吗?答案:答案:new A ,先开辟,先开辟A类对象大小的内存空间,类对象大小的内存空间,即即8个字节,然后调用系统提供的默认构造函数个字节,然后调用系统提供的默认构造函数A() 台州学院计算机系面向对象程序设计(C+)26问题问题5:给:给A类增加构造函数和析构函数,程序输出?类增加构造函数和析构函数,程序输出?台州学院计算机系面向对象程序设计(C+)27 给给A类增加两个构造函数类增加两个构造函数台州学院计算机系面向对象程序设计(C+)28问题问题6:关于,:关于,main中中aa的说法正确的是:的说法正确的是:1. 系统调用构造函数系统调用构造函数A ( )

18、2. 系统调用构造函数系统调用构造函数A(int a, int b)3. 系统不自动执行构造函数系统不自动执行构造函数 4. A类有两个构造函数,有歧义类有两个构造函数,有歧义台州学院计算机系面向对象程序设计(C+)29问题问题7:将:将main中中aa的定义改为:的定义改为:A aa(3,5); 下面说法正确的是:下面说法正确的是:1. 系统调用构造函数系统调用构造函数A ( ) 2. 系统调用构造函数系统调用构造函数A(int a, int b)3. 系统不自动执行构造函数系统不自动执行构造函数 4. A类有两个构造函数,有歧义类有两个构造函数,有歧义台州学院计算机系面向对象程序设计(C+

19、)30问题问题8:若:若只给只给A类增加构造函数类增加构造函数A(int a, int b),则关于则关于main中中 A aa; 以下说法正确是:以下说法正确是:1. 调用系统提供的无参默认构造函数调用系统提供的无参默认构造函数A( )2. 系统调用构造函数系统调用构造函数A(int a, int b)3. 没有与没有与aa匹配的构造函数,有错误匹配的构造函数,有错误 台州学院计算机系面向对象程序设计(C+)31 给给A类增加两个构造函数类增加两个构造函数台州学院计算机系面向对象程序设计(C+)32问题问题9:关于,:关于,main中中aa的说法正确的是:的说法正确的是:1. 系统调用构造函

20、数系统调用构造函数A ( ) 2. 系统调用构造函数系统调用构造函数A(int a, int b)3. 系统不自动执行构造函数系统不自动执行构造函数 4. A类的两个构造函数有歧义类的两个构造函数有歧义台州学院计算机系面向对象程序设计(C+)33问题问题10:在:在main中将中将aa 的的x设置为设置为0,格式正确的是:格式正确的是:1. setx(0); 2. x = 0; 3. aa.setx (0); 4. aa.x = 0; 台州学院计算机系面向对象程序设计(C+)34问题问题11:在:在A类中添加成员函数类中添加成员函数printt 打印输出打印输出x和和y,定义,定义对的是:对的

21、是:1. void printt(A & t) cout t. x t.yendl;2. void printt( ) A t; cout t. x t.yendl;3. void printt( ) cout x yendl;4. void printt( ) cout aa.x aa.yendl;台州学院计算机系面向对象程序设计(C+)35问题问题12:在:在A类中添加成员函数类中添加成员函数printt 打印输出打印输出x和和y,定义,定义对的是:对的是: 1. void printt( ) coutgetx( ) gety( )endl;2. void printt( ) A t; cout t. gety( ) t.getx( )endl;3.void printt (A & t) cout t. getx( ) t.gety( )endl;4. void printt ( ) cout aa. getx( ) aa.gety( )endl;台州学院计算机系面向对象程序设计(C+)36 问题问题13:在:在main中调用中调用printt打印输出打印输出aa的的x和和y,调用格式正确的是:调用格式正确的是: 1. aa. printt( ); 2. a

温馨提示

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

评论

0/150

提交评论