欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOCX文档下载
 

c期末总复习-篇.docx

  • 资源ID:16595342       资源大小:28.52KB        全文页数:17页
  • 资源格式: DOCX        下载积分:5积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要5积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

c期末总复习-篇.docx

c+复习摘要第一部分简单的程序设计一、标识符(包括变量名命名规则)1、定义:由数字、大小写字母和下划线组成2、例子:合法:Int(大小写不一样,不是关键字int)、_ab不合法:new和friend(不能与关键字相同)、a+b(不能有+)、2b(开头不能是数字)2、 基本数据类型存储空间位数存储形式double864补码int432补码float432补码char18ASCII码特殊:指针*p4(固定为long int类型)string16(固定大小)注1:精度低>自动转换>精度高注2:int a;a=8/3>a=2(int整型)3、 常量与变量1、 八进制>正负号和0开头,例:012、-057十六进制>正负号和0x或0X开头,例:0x34、-0X682、 字符常量(1) 普通字符:A、0、#、 (空格)(2) 转义字符:n、(表示)、0(3) a>一个字节,“a”>两个字节(包括/0),长度为1注:ddd>表示八进制字符xdd>表示十六进制字符例:strlen(“abc1200a s0d”)和sizeof(“abc1200a sd”)的值>分析1:其中有a、b、c、120(八进制)、0(碰到第一个则终止,且不计入长度),所以结果为5>分析2:算上所有的字符(包括0,注意有个空格在a与s之间),结果为11(char字符占一个字节)3、 指数:2e-6、-1.5E2(结尾加一个f(F),表示结果为float型)注:e(E)后(即指数)必须是整数4、 运算符和表达式1、 算术运算符+、-、/(不是)、*(不可省略)、%(取余)注1:+()、-(),其中()中必须是变量,不能是常量和表达式例:5+、(a+b)+、+(2*i)不合法注2:int i=5,b;b=i+;>b=5;i=6 int i=5,c;c=+i;>c=6;i=62、 赋值运算符(1) 区分“=”和“=”(2) a+=b>a=a+b3、 关系运算符和逻辑运算符(1)结果总为1或0例1:t=5>4>t=(5>4)>5>4为真,则结果为1>t的值为1例2: a=1&&2>a=(1!=0)&&(2!=0)>a=1(&&运算优先级高)4、 逗号运算符:表达式结果为最后一个逗号后的结果例:a=3*5,a+5>表达式结果为205、 语句1、 if(a)>if(a!=0)2、 do whlie语句>至少执行一次例:do int i=1;j=0while(a=b)分析:先循环一次,由于条件为i=j>(i=bj)!=0(不是a=b),则结果是无限循环3、 switch语句不一定每个case后都有break(跳出当前循环语句,而不是if语句),default至多一个。例:switch(a)case 1:cout<<A;break;case 2:cout<<Bcase 3:cout<<C;break;若输入a=2,则输出的结果为BC,程序从第二个开始执行,因为没有break跳出当前程序,会继续执行下面的程序,直到break跳出等。4、 for循环:注意是否会无限循环(循环条件的正确性)例:for(int x=0;x<=0;x-)>无限循环6、 补充1、 continue>跳过剩余语句(继续循环,不会跳出)2、 const int a=5>a的值不会再变(即a=6>错误)3、 运算符优先级逻辑运算符(!>&&>|)>条件运算符(A?B:C) >值运算符(=、+=、*=)4、 条件运算符>A?B:C例:5>4?3:2>若A为真,则输出B,否则输出C,所以答案为3第二部分构造数据类型1、 数组1、 数组下标只能是常量(an、a>不合法)2、 int a2020>数组未初始化,则元素的值不确定(除了静态数组未初始化时,默认是0)int a2020=0>元素全部为0,且每个元素都必须是int型的注:a(5)>a=5,上述数组最后一个元素为a19193、 部分初始化:a5=1,2,3>a5=1,2,3,0,02、 指针1、*>取内容,&>取地址int a5=0 , *p , p=&a0(或p=a)>取出a中的首地址(即a0)放在p中,则p中所存内容就是a0的首地址(*p>即读取p中地址的内容>就是a0)(1)cout<<p>p本身的首地址(2)cout<<&p>取p中所存的地址,再输出>a的首地址(3)cout<<*p>取p所存首地址的内容>输出a0(4)cout<<*(p+1)>指针往后移动一位>输出a1注:*(p+)>*(p+1)2、动态内存分配(1)int *p=new floatN>一维数组(这里N为变量)int (*p)4=new float34>二维数组最后>delete p3、 引用1、 int r,&rv=r>别名与目标名(即rv和r)共用内存2、 类型必须一致,必须立即初始化(int &rv;>错误)例:int a;double &b=a;>错误3、 不能中途换名例:int a,c;int &b=a,&c=b;>错误4、 数组引用:int a5=0;(&rv)5=a; 4、 字符串1、 char s20=”c+程序设计”,*p=s;(1) sizeof(s)>一共可存放20个元素,每个都是char(占一个字节)>结果为20(2) sizeof(p)>p是指针,一定为4个字节>结果为4(3) Strlen(s)>”c+”为三个字节,”程序设计”(汉字是两个字节)为8个字节(不含0)>结果为11注:char a5=”12345”>错误(必须有一个位置放0)2、String(1) string a=”man”,b=”kind”;>a1=e>a=”men”>可以当作数组看(2) 可以连接:c=a+b>c=”mankind”(3) 可以相互赋值:a=b>a=”kind”注:(2)和(3)都是char字符型数组所不能实现的例:char a5=”c+”,b6=”hello”;a=b;>错误5、 其他类型1、 枚举类型:enum例:enum seasoon spring,summer,autumn,winter;season s=winter>s=3;分析:spring相当于0,后面逐次递增(可以对spring进行默认值设定,令spring=1,后面依次递增)2、 结构体:struct>类比类与对象3、 共用体:union注:若干个成员中,其中占用内存最大的,作为共用体类型的大小(不是相加)例:union aint x;char s;>显然占4个字节(int),而不是char的1个字节6、 补充1、 char name20>cout<<name>输出为字符数组的内容 int name20>cout<<name>输出首地址2、 char *p=”hello”(类比数组)(1) cout<<*p>h(2)cout<<p>hello(3) cout<<p+1>ello>指针向后移动一位,指向e,再输出后面的内容3、 strcmp(s1,s2)>进行大小比较 Strcpy(s1,s2)>s1=s2(将s2的内容赋给s1) S=strcat(s1,s2)>将s1与s2的内容进行连接,再给S第三部分函数1、 认识函数1、 声明:int add(int a,int b);>形参不占用空间,可省略为int add(int,int);(注意要有”;”)调用:z=add(a,b)>a,b均为实参(有内容)例:z=swap(a+b,max(c),v)>swap函数实参为3个(两个逗号)2、c+的程序总是从main函数开始执行的3、函数不允许嵌套定义,但是可以相互调用4、有默认值的形参右边都要有默认值例:int(int a,int b=0)>合法 int(int a=0,int b)>不合法5、 引用传递:swap(int &x);>x的值与函数结果有关swap(int x);>swap函数只是利用了x的值去运算,而未改变x本身的值2、 简单函数1、 递归函数(可简化程序,但时间和空间需求大)例:阶乘>int f(int n)if(n=1)return0;else return n*f(n-1);2、 内联函数(提高程序执行效率,以空间换时间):inline例:inline int add(int a,int b)>只能包含一些简单的语句3、 系统函数例:sqrt(2)>开方,fabs(-9)>绝对值,rand()>随机函数4、 函数重载功能相似(1) 同名函数,但函数的参数类型、个数或者顺序不同(2) 函数的返回值类型不能作为函数重载的区分条件(3) 不能把功能不同的函数放在一起重载3、 其他1、 int a就相当于auto int a>auto为自动变量,存放于动态存储区,可省略2、 extern>外部变量(属于全局变量),定义在函数体(包括mian函数)之外>全局寿命3、 static>静态变量(未初始化时,就默认为0)>有记忆功能(记住上一次运行结果)第四部分类与对象1、 类与对象的认识1、 c+通过类来实现封装2、 面向对象程序设计的三个特征:封装性、多态性和继承性3、 在类体内不能对数据成员进行初始化(因为没定义对象)例:Class Aprivate:int data=2;>错误2、 类成员1、 private(私有成员)>若开头省略,则默认为私有成员,只有该类的成员才能进行访问私有成员(派生类和对象都不能访问)2、 protected(保护成员)>允许派生类访问,不允许对象访问3、 public(共有成员)>定义了类的外部接口,允许派生类访问,并可以被对象进行调用4、 成员函数类内声明>settime(int a=0,int b=0)>类外定义>void Clock:settime(int a=0,int b=0)3、 对象1、 对象所占据内存只用于存放数据成员(如a、b等),类中函数代码在内存中只占据一份空间2、 访问类型:Clock c,*time=&c,则有c.showtime()或(*time).showtime或time->showtime()4、 构造函数与析构函数1、 构造函数>对象的初始化(1) 它是一个与类同名的成员函数,没有返回值,定义为公有函数,只能在定义对象是被系统内自动调用(2) 类中可以有多个构造函数,构造函数可以被重载,可以是内联函数(3) 带默认参数的构造函数例:构造函数 Clock(int a=0,int b=0)>Clock c1,c2(1),c3(1,1)>均是正确的,如c2(1)等价于c2(1,0)(4) 复制构造函数:Clock(Clock &c)例:Clock c1;Clock c2(c1)>Clock c2=c1注1:Clock *p>不会调用构造函数 Clock *p=&a>出现对象a,则调用构造函数注2:Clock a4=c1,c2,c3,c4>由于有4个元素都被类定义,故调用4次构造函数,程序结束时调用4次析构函数5、 析构函数:Clock()>()中不能有参数1、 析构函数属于公有成员,不能重载,但可以是虚函数2、 当对象被删除或者程序结束时,自动调用析构函数例:Clock *p=new Clock a;delete p>申请的空间被删除,则对象也消失,故调用一次析构函数3、 一般情况下,调用几次构造函数,结束时就相反顺序调用几次析构函数6、 友元:friend1、实现不同类之间的数据共享,但破坏了类的封装性和隐蔽性2、友元函数>不属于类的成员函数,可以访问类的所有成员(包括私有成员)3、友元类:如Class A.friend Class B;.>意味着B类是A类的友元类>B类的所有成员函数都可以访问A类的所有成员4、友元关系不能传递且是单向的(A是B的友元函数,但B不是A的友元函数),友元关系不会被继承七、其他1、 this 指针:存在于类的成员函数中,用于区分数据成员(除静态数据成员外)2、 静态成员:static(1) 不属于某个对象,属于整个类(只能通过类名进行访问)(2) 类外初始化,同样具有”记忆功能”3、 const可用于对函数重载的区分4、 类别对象是否可以访问派生类是否可以访问private 否否protected 否是public 是是5、 类别可以重载或内联数量是否可以有形参构造函数是一或多是析构函数否一否注:均无返回类型(如int、double),析构函数可以是虚函数第五部分继承与派生1、 继承1、 若省略继承方式,则默认为私有继承例:Class A:B>Class A:private B2、 派生类继承了基类除去构造函数和析构函数之外的全部数据成员和函数成员>派生类中也有和基类一样的函数3、 同名覆盖>派生类中的新的同名函数覆盖基类的函数4、 继承方式>基类中的成员将在派生类中有的访问权限例:Class B:protected A>A中的成员在派生类中的访问权限是protected(故派生类的对象不能访问,派生类可以访问)注:A中的public和protected在B中的访问权限都变成protected注1:派生类的对象可以访问基类的public注2:即使基内的private在派生类不可访问却仍然存在注3:private属于”传递一代”,protected可以”多代传递”2、 派生1、 派生类的构造函数和析构函数(1)例:Clock(int a,char b):Point(b)注:派生类构造函数既要初始化派生类新增的成员,也要为他的基类的构造函数传递数据>引用了基类的构造函数(2) 派生类定义对象时,构造函数调用顺序:先基类>内嵌对象>最后派生类例:Class B:public Apiblic:A a;>故先调用两次A的构造函数,在调用B的构造函数一次>析构函数则反向执行注:若为多继承Class C:public A,protected B>则顺序执行A的构造函数,再是B的构造函数,最后是C的构造函数2、 虚基类(1) 消除多继承引起的二义性,消除数据冗余(2) 通过虚基类继承,最后建立对象的类(称之为最远派生类),才调用虚基函数的构造函数>保证对虚基类的对象只初始化一次3、 其他1、 若基类的构造函数有默认值,则派生类就不必给基类传递数据例:Class AA(int x=1);Class BB(int y=1)>而不必写成Class BB(int y,int x):A(x)2、 积累与派生类的赋值兼容(1) 派生类的对象可以赋值给基类对象>就是派生类将基类的那部分赋值给基类>反之不行(2) 同一基类的不同派生类对象不能相互赋值(只是交集,不是包含关系)总结:派生类可以对基类进行操作>即(基类)=(派生类)的操作是对的,反之都是错的例:Class A>Class B:public A>A a;B b;a=b(对)>b=a(错误)3、 判断是否可以访问类别基本身派生类派生类的对象 基的私有成员是否否基的保护成员是是否基的公有成员是是是第六部分多态性1、 编译时的多态:函数重载、运算符重载运行时的多态:虚函数2、 运算符重载:operator1、 成员函数 =、()、>(这些只能为成员函数)例:加法>类中声明:Complex operator+(Complex &c)>类外定义:Complex:Complex operator+(Complex &c)>函数的实现:c3=c1+c2注:成员函数隐藏一个this指针,故参数比非成员函数少一个2、 非成员函数:friend 函数返回值类型 operator运算符(形参表)例:friend Complex operator+(Complex &c1,Complex &c2)注:”>>”和”<<”只能重载为非成员函数3、 规则和限制(1) 只能对已有的c+运算符进行重载例:ab、+则是非法的 (2) 下列运算符不能重载.(成员运算符)、*、:、?:、sizeof(3) 重载不改变运算符的优先级、结构、操作个数>只改变功能(4) 重载函数不能有默认参数,且必须至少有一个类的对象例1:Complex operator+(Complex &c=2)>不合法例2:Complex operator+(int &c)>至少一个Complex类对象(5) operator =(无形参)>前缀一元运算符(6) 对于+a,重载为成员函数>a.operater+() 重载为非成员函数>operator+(a)对于a+,重载为成员函数>a.operater+(0) 重载为非成员函数>operator+(a,0)注1:可知,成员函数的形参比非成员函数少一个(this的作用)注2:某一填空题>bool Bounce operator!(Bounce)3、 虚函数1、 例:A a,*p;B b;>则基类对象的指针在指向派生类时,只会指向派生类中的基类部分(谁定义你,你就只与谁有关)>虚函数可以使基类中的函数”隐藏起来”,从而使指针指向派生类的同名函数2、 只有类的成员函数才能是虚函数(构造函数不行,析构函数可以),非成员函数都不行,内联函数不行,静态函数不行3、 必须为public继承,由”基类对象的指针或引用”去掉用基函数,才能实现动态绑定4、 纯虚函数和抽象类1、 纯虚函数:virtual void hello(int x)=0;2、 一个类包含了纯虚函数,则为抽象类>抽象类不能定义对象,只能为基类3、 派生类若没给出基类的纯虚函数的函数实现(即定义一个与纯虚函数同名的有实际作用的函数)>仍不能定义对象,还是一个抽象类(没有同名函数覆盖纯虚函数)4、 虚析构函数>使派生类的析构函数先执行,再执行基类的析构函数>否则可能有内存泄漏(只执行了基类的析构函数)

注意事项

本文(c期末总复习-篇.docx)为本站会员(小**)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!