C++期末考试复习必看考点_第1页
C++期末考试复习必看考点_第2页
C++期末考试复习必看考点_第3页
C++期末考试复习必看考点_第4页
C++期末考试复习必看考点_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、内容:C+程序设计面向对象程序设计MFC题型:1 读程序写出结果(15%)2 改错(指出错误,并改正)(45%)3 编程(20%)4 MFC程序填空(20%)C+程序设计标识符标识符 关键字关键字常量常量:十进制常量、八进制常量、十六进制常量小数表示法、指数表示法)运算符与表达式:算术运算符及表达式、自增自减运算优先级低于算术运算符优先级低于算术运算符语句1 条件语句: 在函数外面定义的变量称为全局变量。在函数外面定义的变量称为全局变量。在C+中函数内要引用全局变量,可以在变量的标识符前加上 :说明是说明是全局变量。 特点:特点: 全局变量可被每个函数使用。作用域是程序级或文件级全局变量可被每

2、个函数使用。作用域是程序级或文件级的。的。 全局变量存放在全局数据区。全局变量存放在全局数据区。 全局变量默认初始值为全局变量默认初始值为0,也可专门初始化。,也可专门初始化。int a; void main()int a=1; :a=a;局部变量局部变量 局部变量即在函数内部定义的变量或函数参数。局部变量即在函数内部定义的变量或函数参数。作用域为函数级或块级。局部变量仅在定义的作用域为函数级或块级。局部变量仅在定义的函数内部是可见的。函数内部是可见的。 特点:特点: 局部变量只能在函数内部使用。局部变量只能在函数内部使用。 局部变量存放在栈中,当函数运行时分配空间,在局部变量存放在栈中,当函

3、数运行时分配空间,在运行结束时释放空间。运行结束时释放空间。 局部变量必须先初始化才能使用。局部变量必须先初始化才能使用。 局部变量可以与全局变量同名,那么全局变量在函局部变量可以与全局变量同名,那么全局变量在函数中将不再起作用。数中将不再起作用。(4)静态局部变量)静态局部变量 在局部变量前加上在局部变量前加上static关键字,就成了静态局关键字,就成了静态局部变量。部变量。 特点:特点: 静态局部变量在定义它的函数内部是可见的,只能静态局部变量在定义它的函数内部是可见的,只能被定义它的函数使用。这一点与局部变量相同。被定义它的函数使用。这一点与局部变量相同。 静态局部变量存放在内存的全局

4、数据区,静态局部静态局部变量存放在内存的全局数据区,静态局部变量一经定义不会再次分配存储空间,也不会自行变量一经定义不会再次分配存储空间,也不会自行消失,直到程序运行结束,这一点与全局变量相同。消失,直到程序运行结束,这一点与全局变量相同。 静态局部变量默认初始值为静态局部变量默认初始值为0,也可专门初始化。,也可专门初始化。这一点又与全局变量相同这一点又与全局变量相同 指针:概念、运算符(*,&)、定义、使用、指针的运算指针与数组二级指针、指针数组引用:定义与使用结构体 class public: ;protected: ; private: ;(1)访问对象成员)访问对象成员. /用来访问

5、数据成员用来访问数据成员或者或者.() /用来访问成员函数用来访问成员函数(2)用指针访问对象成员)用指针访问对象成员- /用来访问数据成员用来访问数据成员-() /用来访问成员函数用来访问成员函数或者或者(*). /用来访问数据成员用来访问数据成员(*).() /用来访问成员函数用来访问成员函数(3)用引用传递访问对象成员)用引用传递访问对象成员. /用来访问数据成员用来访问数据成员或者或者.() /用来访问成员函数用来访问成员函数 构造函数和析构函数都是类的成员函数,但它构造函数和析构函数都是类的成员函数,但它们是特殊的成员函数,不用调用便自动执行,们是特殊的成员函数,不用调用便自动执行,

6、而且这些函数的名字与类的名字有关。而且这些函数的名字与类的名字有关。 创建对象时都要调用构造函数(包括默认构造创建对象时都要调用构造函数(包括默认构造函数)。构造函数的工作是建立对象的基本结函数)。构造函数的工作是建立对象的基本结构,进行数据初始化。执行构造函数体中的代构,进行数据初始化。执行构造函数体中的代码。码。 当一个对象退出其作用域时,都要调用析构函当一个对象退出其作用域时,都要调用析构函数。析构函数的工作是:执行析构函数中的代数。析构函数的工作是:执行析构函数中的代码,将对象占据的存储空间归还系统,做公共码,将对象占据的存储空间归还系统,做公共及用户要求的善后工作。及用户要求的善后工

7、作。构造函数和析构函数的特点:构造函数和析构函数的特点: 都没有返回值说明,即定义构造函数和析构函数时不都没有返回值说明,即定义构造函数和析构函数时不需指出类型。需指出类型。 它们不能被继承。它们不能被继承。 和大多数和大多数C+函数一样,构造函数可以有缺省参数。函数一样,构造函数可以有缺省参数。 析构函数可以是虚的(析构函数可以是虚的(virtual),但构造函数不行。),但构造函数不行。 不可取它们的地址。不可取它们的地址。 不能用常规调用方法调用构造函数;当使用完全的限不能用常规调用方法调用构造函数;当使用完全的限定名(带对象名、类名和函数名)时可以调用析构函定名(带对象名、类名和函数名

8、)时可以调用析构函数。数。 当定义对象时,编译程序自动调用构造函数;当删除当定义对象时,编译程序自动调用构造函数;当删除对象时,编译程序自动地调用析构函数。对象时,编译程序自动地调用析构函数。 若有带参数的构造函数,在定义对象时必须给带参若有带参数的构造函数,在定义对象时必须给带参数的构造函数传递参数,否则构造函数将不被执行。数的构造函数传递参数,否则构造函数将不被执行。但在有些构造函数的使用中,一般都使用缺省值。但在有些构造函数的使用中,一般都使用缺省值。因为在构造函数中允许指定函数参数的缺省值,这因为在构造函数中允许指定函数参数的缺省值,这被定义的缺省值在函数调用者不确定参数时可以作被定义

9、的缺省值在函数调用者不确定参数时可以作为参数来使用。为参数来使用。 缺省参数可以是一个或一个以上,若有一个以上的缺省参数可以是一个或一个以上,若有一个以上的缺省参数,其用法和前面介绍的函数的缺省参数用缺省参数,其用法和前面介绍的函数的缺省参数用法一样。法一样。默认参数的顺序规定默认参数的顺序规定 当函数中定义默认参数时,如果仅有部分参数定义成默认参数,当函数中定义默认参数时,如果仅有部分参数定义成默认参数,则应将默认参数连续放在右边则应将默认参数连续放在右边(不能空缺不能空缺)。当调用函数时只能。当调用函数时只能向左匹配参数。向左匹配参数。 例如:例如: void func(int a=1,i

10、nt b,int c=3,int d=4); /错错 void func(int a,int b=2,int c=3,int d=4); /正确正确 对于第二个声明,其调用的方法为:对于第二个声明,其调用的方法为: func(10,15,20,30); /正确正确 func( ); /错误错误 func(12,12); /正确,参数正确,参数c,d默认默认 func(2,15, ,20); /错误,只能从右到左顺序匹配默认参数,这错误,只能从右到左顺序匹配默认参数,这等于将等于将c进行默认匹配,而没有将进行默认匹配,而没有将d也默认匹配,也就是说,也默认匹配,也就是说,c默认匹配则默认匹配则d

11、也必须先默认匹配。也必须先默认匹配。 构造函数的执行次序是先遇到哪个构造构造函数的执行次序是先遇到哪个构造函数,就执行哪个。函数,就执行哪个。 析构函数的执行次序恰好和构造函数相析构函数的执行次序恰好和构造函数相反。反。类的拷贝构造函数 拷贝构造函数是一种特殊的构造函数。拷贝构造函数是一种特殊的构造函数。首先,它是一个构造函数,当创建一个首先,它是一个构造函数,当创建一个新对象时,系统自动调用它;其次,它新对象时,系统自动调用它;其次,它的特殊功能是将参数代表的对象逐域拷的特殊功能是将参数代表的对象逐域拷贝到新创建的对象中。即贝到新创建的对象中。即用一个已有对用一个已有对象初始化一个正在建立的

12、同类对象。象初始化一个正在建立的同类对象。 拷贝构造函数的定义有两种形式:系统拷贝构造函数的定义有两种形式:系统产生和用户定义。产生和用户定义。#include “iostream.h”class point int x,y;public: point(int vx,int vy) x=vx;y=vy; point(const point & p) x=p.x;y=p.y; void print() coutx“ “yendl;void main() point p1(10,20); /定义一个定义一个point类对象类对象p1 point p2(p1); /定义一个定义一个point类对象类

13、对象p2。此时,在定义对象。此时,在定义对象p2时调用的是类中自定义的时调用的是类中自定义的拷贝构造函数,值与拷贝构造函数,值与p1对象的相同。对象的相同。 point p3=p1; /也可以用赋值的方式使用拷贝构造函数也可以用赋值的方式使用拷贝构造函数 p1.print(); p2.print(); p3.print()对象指针:对象指针:new和和delete的使用的使用#include class CTest private: int a,b; public: CTest(int x,int y=1)a=x;b=y;coutConab; CTest()coutDesab; void di

14、splay()couta bX=X; this-Y=Y; this-H=H; this-W=w; private: int X,Y,H,W; /类中成员数据类中成员数据对象数组的定义及初始化和访问#include class CTest private: int a,b; public: CTest(int x,int y=1)a=x;b=y; void display()couta bendl;void main()CTest array3=CTest(2),CTest(3,3),5;for(int i=0;i3;i+) arrayi.display(); 对象做函数参数 对象作为类的数据成

15、员 C+中,类对象常常可以作为另一个类的中,类对象常常可以作为另一个类的成员。使用对象成员着重要注意的问题成员。使用对象成员着重要注意的问题是一个类的内部初始化问题。是一个类的内部初始化问题。友元 为什么引入友元 友元函数 友元类继承与派生:派生类定义、派生类成员重定义派生类的构造函数的定义():):(),),() () ;派生类定义对象时构造函数、析构函数执行顺序(1)调用基类的构造函数,调用顺序按照)调用基类的构造函数,调用顺序按照它们继承时说明的顺序。它们继承时说明的顺序。(2)调用对象成员的构造函数,调用顺序)调用对象成员的构造函数,调用顺序按照它们在类中说明的顺序。按照它们在类中说明

16、的顺序。(3)派生类构造函数体中的内容。)派生类构造函数体中的内容。 析够时先执行派生类的析构函数,再执行析够时先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数基类的析构函数,其顺序与执行构造函数时的顺序正好相反。时的顺序正好相反。基类与派生类之间的转换 赋值兼容规则是指:在公有派生的情况下,一个派生类的赋值兼容规则是指:在公有派生的情况下,一个派生类的对象可用于基类对象适用的地方。赋值兼容规则有三种情对象可用于基类对象适用的地方。赋值兼容规则有三种情况(假定类况(假定类derived由类由类base派生)派生) :(1)派生类的对象可以赋值给基类的对象。)派生类的对象可以赋

17、值给基类的对象。derived d;base b;b=d;(2)派生类的对象可以初始化基类的引用。)派生类的对象可以初始化基类的引用。derived d;base& b=d;(3)派生类的对象的地址可以赋给指向基类的指针。)派生类的对象的地址可以赋给指向基类的指针。derived d;base *pb=&d; 虚函数与派生类纯虚函数与抽象类(例题、实验计算面积或体积)运算符重载( + - * / = )友员、成员复数类、数组类(P149 例6.4)重载运算符举例函数模版#include template T min(T a,int n)int i;T minv=a0;for(i=1;iai) minv=ai;return minv;void main()int a=1,3,0,2,7,6,4,5,2;double b=1.2,-3.4,6.8,9,8;couta数组的最小值为:数组的最小值为:min(a,9) endl;coutb数组的最小值为:数组的最小值为

温馨提示

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

最新文档

评论

0/150

提交评论