版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C期末考试复习必看考点C期末考试复习必看考点C期末考试复习必看考点题型:1读程序写出结果(15%)2改错(指出错误,并改正)(45%)3编程(20%)4MFC程序填空(20%)C++程序设计标识符关键字常量:十进制常量、八进制常量、十六进制常量长整型和无符号整数浮点数常量(小数表示法、指数表示法)字符常量和字符串常量、符号常量变量:命名、定义、初始化运算符与表达式:算术运算符及表达式、自增自减运算关系运算符(优先级低于算术运算符)逻辑运算符、赋值运算符、条件运算符、逗号运算符类型转换语句1条件语句:
if…else语句、switch语句2循环语句while语句、do…while语句、for语句3跳转语句break语句、continue语句函数:函数的定义函数声明函数的调用函数调用时的参数传递(按值传递、地址传递、引用传递)return语句嵌套调用全局变量在函数外面定义的变量称为全局变量。在C++中函数内要引用全局变量,可以在变量的标识符前加上::说明是全局变量。特点:全局变量可被每个函数使用。作用域是程序级或文件级的。全局变量存放在全局数据区。全局变量默认初始值为0,也可专门初始化。inta;voidmain(){inta=1;::a=a;}局部变量局部变量即在函数内部定义的变量或函数参数。作用域为函数级或块级。局部变量仅在定义的函数内部是可见的。特点:局部变量只能在函数内部使用。局部变量存放在栈中,当函数运行时分配空间,在运行结束时释放空间。局部变量必须先初始化才能使用。局部变量可以与全局变量同名,则全局变量在函数中将不再起作用。(4)静态局部变量在局部变量前加上static关键字,就成了静态局部变量。特点:静态局部变量在定义它的函数内部是可见的,只能被定义它的函数使用。这一点与局部变量相同。静态局部变量存放在内存的全局数据区,静态局部变量一经定义不会再次分配存储空间,也不会自行消失,直到程序运行结束,这一点与全局变量相同。静态局部变量默认初始值为0,也可专门初始化。这一点又与全局变量相同数组:一维数组:定义、引用、初始化二维数组:定义、引用、初始化字符数组与字符串:初始化、赋值、输入、输出、字符串处理函数(strlen、strcpy、strcat、strcmp、sprintf)指针:概念、运算符(*,&)、定义、使用、指针的运算指针与数组二级指针、指针数组引用:定义与使用结构体类和对象类的构成及定义(类内不允许直接初始化变量,在类的说明部分之后必须加分号”;”。
)class<类名>{public:<公有数据成员和成员函数>;protected:<保护数据成员和成员函数>;private:<私有数据成员和成员函数>;};对象的定义,成员访问
(1)访问对象成员 <对象名>.<成员名>//用来访问数据成员或者 <对象名>.<成员名>(<参数表>)//用来访问成员函数(2)用指针访问对象成员 <对象指针名>-><成员名>//用来访问数据成员 <对象指针名>-><成员名>(<参数表>)//用来访问成员函数或者 (*<对象指针名>).<成员名>//用来访问数据成员 (*<对象指针名>).<成员名>(<参数表>)//用来访问成员函数(3)用引用传递访问对象成员 <引用名>.<成员名>//用来访问数据成员或者 <引用名>.<成员名>(<参数表>)//用来访问成员函数构造函数和析构函数定义
构造函数和析构函数都是类的成员函数,但它们是特殊的成员函数,不用调用便自动执行,而且这些函数的名字与类的名字有关。创建对象时都要调用构造函数(包括默认构造函数)。构造函数的工作是建立对象的基本结构,进行数据初始化。执行构造函数体中的代码。当一个对象退出其作用域时,都要调用析构函数。析构函数的工作是:执行析构函数中的代码,将对象占据的存储空间归还系统,做公共及用户要求的善后工作。构造函数和析构函数的特点:都没有返回值说明,即定义构造函数和析构函数时不需指出类型。它们不能被继承。和大多数C++函数一样,构造函数可以有缺省参数。析构函数可以是虚的(virtual),但构造函数不行。不可取它们的地址。不能用常规调用方法调用构造函数;当使用完全的限定名(带对象名、类名和函数名)时可以调用析构函数。当定义对象时,编译程序自动调用构造函数;当删除对象时,编译程序自动地调用析构函数。构造函数:构造函数重载(缺省的构造函数和带缺省值的构造函数)
若有带参数的构造函数,在定义对象时必须给带参数的构造函数传递参数,否则构造函数将不被执行。但在有些构造函数的使用中,一般都使用缺省值。因为在构造函数中允许指定函数参数的缺省值,这被定义的缺省值在函数调用者不确定参数时可以作为参数来使用。缺省参数可以是一个或一个以上,若有一个以上的缺省参数,其用法和前面介绍的函数的缺省参数用法一样。默认参数的顺序规定当函数中定义默认参数时,如果仅有部分参数定义成默认参数,则应将默认参数连续放在右边(不能空缺)。当调用函数时只能向左匹配参数。例如:voidfunc(inta=1,intb,intc=3,intd=4);//错voidfunc(inta,intb=2,intc=3,intd=4);//正确对于第二个声明,其调用的方法为:func(10,15,20,30);//正确func();//错误func(12,12);//正确,参数c,d默认func(2,15,,20);//错误,只能从右到左顺序匹配默认参数,这等于将c进行默认匹配,而没有将d也默认匹配,也就是说,c默认匹配则d也必须先默认匹配。构造函数和析构函数执行顺序
构造函数的执行次序是先遇到哪个构造函数,就执行哪个。析构函数的执行次序恰好和构造函数相反。类的拷贝构造函数拷贝构造函数是一种特殊的构造函数。首先,它是一个构造函数,当创建一个新对象时,系统自动调用它;其次,它的特殊功能是将参数代表的对象逐域拷贝到新创建的对象中。即用一个已有对象初始化一个正在建立的同类对象。拷贝构造函数的定义有两种形式:系统产生和用户定义。#include“iostream.h”classpoint{intx,y;public:point(intvx,intvy){x=vx;y=vy;}point(constpoint&p){x=p.x;y=p.y;}voidprint(){cout<<x<<““<<y<<endl;}};voidmain(){pointp1(10,20);//定义一个point类对象p1pointp2(p1);//定义一个point类对象p2。此时,在定义对象p2时调用的是类中自定义的拷贝构造函数,值与p1对象的相同。pointp3=p1;//也可以用赋值的方式使用拷贝构造函数p1.print();p2.print();p3.print()}对象指针:new和delete的使用#include<iostream.h>classCTest{private:inta,b;public:CTest(intx,inty=1){a=x;b=y;cout<<"Con"<<a<<b;}~CTest(){cout<<"Des"<<a<<b;}voiddisplay(){cout<<a<<""<<b<<endl;}};voidmain(){CTest*a;a=newCTest(2);deletea;}静态数据成员在一个类中,若将一个数据成员说明为static,这种成员称为静态数据成员。无论建立多少个该类的对象,都只有一个静态数据的拷贝。当这个类的第一个对象被建立时,所有static数据都被初始化,并且,以后再建立对象时,就不需要再对其进行初始化。即编译器只为该数据成员分配一份内存空间,该类的各个对象公用它。classChinese{public:staticintgetSkinColor()//静态成员函数,能够访问static数据{returnSkinColor;}private:staticintSkinColor;//静态数据成员char*Name;};intChinese::SkinColor=YELLOW;//在类外对它初始化(注意必须采用类名来限定它)this指针this指针是隐含在类的成员函数中的一对象指针,每当成员函数被调用时,this指针自动指向该成员函数所属类的对象(即this指针代表当前对象)。可将成员函数的形参名与类中成员数据同名。例如:classWindow{public:Window(intX,intY,intH,intW)//成员函数形参名{this->X=X;this->Y=Y;this->H=H;this->W=w;}private:intX,Y,H,W;//类中成员数据}对象数组的定义及初始化和访问#include<iostream.h>classCTest{private:inta,b;public:CTest(intx,inty=1){a=x;b=y;}voiddisplay(){cout<<a<<""<<b<<endl;}};voidmain(){CTestarray[3]={CTest(2),CTest(3,3),5};for(inti=0;i<3;i++)array[i].display();}对象做函数参数对象作为类的数据成员C++中,类对象常常可以作为另一个类的成员。使用对象成员着重要注意的问题是一个类的内部初始化问题。友元为什么引入友元友元函数友元类继承与派生:派生类定义、派生类成员重定义派生类的构造函数的定义<派生构造函数名>(<形参表>):<基类构造函数名>(<形参表>),<对象成员1的构造函数>(<形参表>)…<对象成员n的构造函数>(<形参表>){<派生类中数据成员初始化>};派生类定义对象时构造函数、析构函数执行顺序
(1)调用基类的构造函数,调用顺序按照它们继承时说明的顺序。(2)调用对象成员的构造函数,调用顺序按照它们在类中说明的顺序。(3)派生类构造函数体中的内容。析够时先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数时的顺序正好相反。基类与派生类之间的转换
赋值兼容规则是指:在公有派生的情况下,一个派生类的对象可用于基类对象适用的地方。赋值兼容规则有三种情况(假定类derived由类base派生):(1)派生类的对象可以赋值给基类的对象。 derivedd; baseb; b=d;(2)派生类的对象可以初始化基类的引用。 derivedd; base&b=d;(3)派生类的对象的地址可以赋给指向基类的指针。 derivedd; base*pb=&d;虚函数与派生类纯虚函数与抽象类(例题、实验计算面积或体积)运算符重载(+-*/=[])友员、成员复数类、数组类(P149例6.4)重载运算符举例函数模版#include<iostream.h>template<typenameT>Tmin(Ta[],intn){ inti; Tminv=a[0]; for(i=1;i<n;i++) if(minv>a[i])minv=a[i]; returnminv;}voidmain(){ inta[]={1,3,0,2,7,6,4,5,2}; doubleb[]={1.2,-3.4,6.8,9,8}; cout<<"a数组的最小值为:"<<min(a,9)<<endl; cout<<"b数组的最小值为:"<<min(b,4)<<endl;}类模版#include<iostream.h>template<classTT>classFF{ TTa1,a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年数据交易场所运营管理体系建设
- 2026年量子芯片从百比特向千比特跨越制造工艺攻关
- 2026年商务部一视同仁支持外资企业参与提振消费政府采购招投标政策解读
- 2026年社区居家养老助餐助医助急“三助”服务规范
- 2026年肢体残疾人智能轮椅个性化定制服务
- 2026年碱基编辑意外RNA脱靶效应检测与编辑器优化策略
- 2026年深海应急抢险与打捞装备体系建设
- 2026年燃料电池汽车能耗评价与全生命周期成本
- 2026年铌酸锂单晶薄膜在5G 6G通信滤波器中的应用
- 2026年先进制造业与现代服务业融合发展水平评估报告
- 学校饮用水污染事件应急报告与管理制度
- 2026年粤港澳大湾区建筑市场发展新机遇
- 2026年北大emba考试试题
- 幽门螺杆菌相关性胃炎中胃内菌群与抗菌肽表达的协同变化及临床意义
- 2026年高压电工证考试试题及答案
- 注塑岗位安全培训课件
- 2025年高职(城市轨道交通机电技术)设备调试阶段测试题及答案
- 2026年考试题库北汽集团高管知识水平测试
- 核电防异物管理指南(核心版)
- 电厂防汛课件
- 人工智能在高职机械专业教学中的应用研究
评论
0/150
提交评论