




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章1.动态分派内存利用new关键字:1)为一个对象分派内存:指针名=new类型名;2)为一个对象数组分派内存:指针名=new类型名[长度];利用delete关键字:1)释放对象占用内存:delete指针名;2)释放一个对象数组占用内存:delete[]指针名。注意:new和delete必需成对显现,且delete释放一个对象时,会挪用析构函数。2.引用数据类型&别名=对象名例如:inta=56;int&b=a;那么b是对a的引用.什么是左值和右值?左值:必需是能被计算和修改的。右值:右值表达式的值必需是固定的。.指向常量的指针指向常量的指针一样形式:constint*p注意:*p不能作为左值。.常量指针常量指针一样形式:int*constp注意:*p不能作为左值。.指向常量的常量指针常量指针一样形式:constint*constp注意:*p不能作为左值。.泛型算法应用于一般数组对数组进行升幂排序,反转数组内容,复制数组等要包括〈algorithm》头文件包对数组进行降幂排序和检索要包括〈functional》头文件包(1)反转数组内容:reverse(a,a+数组长度)(2)复制数组内容:copy(a,a+数组长度,b)(3)reverse_copy(a,a+数组长度⑼;reverse_copy是将数组的内容从尾到头的逆向复制(4)数组升幂排序:sort(a,a+数组长度)(5)数组降幂排序:sort(b,b+数组长度,greater<Type>())(6)查找数组内容:find(a,a+数组长度,value)(7)数组内容的输出:copy(a,a+len,ostreamJterator<Type>(cout,"字符串"));注意:可将ostream_iyerator明白得为输出流操纵符,<Type>表示数组元素的数据类型"字符串”是数组元素间的距离。.数据的简单输入输出C++提高了两种格式操纵方式:一种是利用ios_base类提供的接口;另一种是称为操控符的特殊函数,它的特点是能够直接包括在输出和输入表达式中,因此加倍方便。不带参数操控符概念在头文件<iostream>中,带形式的概念在头文件<iomanip>中三是无参数的操控符函数不能带有()名称含义作用Dec设置转换基数为十进制输^/输出oct设置转换基数为八进制输^/输出Hex设置转换基数转换为十六进制输^/输出Endl输出一个换行符输出Resetiosflags(longflags)清除flag标志位输出Setiosflags(longflags)清除flag标志位输出Setfill(charch)设置ch为填充字符输出Setprecision(intn)设置浮点数输出精度输出Setw(intwidth)设置输出字符间字段宽度输出常量及其含义常量名含义Ios_base::left输出域左对齐Ios_base::right输出域右对齐Ios_base::showpoint浮点数输出必须带一个小数点Ios_base::showpos在正数前面加+Ios_base::scientific使用科学计数法表示浮点数Ios_base::fixed使用定点形式表示浮点数第二章1.string对象string对象包括于#include<string>头文件包中(2)计算字符串长度的函数:size(),利用方式是字符串.size。(3)返回字符串子串的函数:5“5$仃(起始位置,终止位置)注意:给出的起始位置必需位于字符串中,不然犯错。若是终止位置大于字符串的长度,那么自动截取到字符串尾部。(4)字符串查找函数:件门~(要查找字符串,开始查找的位置)(5)String类有一对用来指示其元素位置在的大体函数成员:beginOfflend(),Begin()指示第一个元素,end()指示最后一个元素以后。若是begin()不等于end(),那么算法第一作用于begin()所指元素,然后指向下一个元素,明白begin()等于end()。因此元素存在于半开区间[begin,end)中。(6)char概念的字符串利用“\0”作为终止标记。String不是。2.利用complex对象(1)那个对象包括于头文件#include<complex>中。利用方式:complex<数据类型>对象名(实部值,虚部值)Complex利用成员函数real()和imag()函数输出实部和虚部值(2)string类型的数组的swap()成员函数能够互换连个数组分量。第三章1.函数的参数及其传递方式(1)对象作为函数参数:将对象名作为函数参数,这种传递是单向的,可不能改变实参的值。(2)对象指针作为函数参数:将对象地址作为函数参数,这种传递会改变实参的值。(3)引用作为函数参数:概念时,形参是别名;调历时,实参是对象名。实参对象和形参对象代表同一个对象,因此改变形参对象确实是改变实参对象。.利用const珍惜数据:利用const修饰符传递参数,只能利用参数而无权修改参数。如此能提高系统平安。.函数返回值(1)函数能够返回一个引用,返回一个引用的要紧目的是为了将该函数用在赋值运算符的左侧。函数原型表示方式:数据类型&函数名(参数列表)(2)返回指针函数:返回值是存储了某种类型数据的内存地址,这种函数称为指针函数。声明函数原型表示方式:类型标示符*函数名(参数列表)注意:当函数返回一个空指针值是,那个能够作为程序异样的标志。(3)返回对象:函数返回string等对象。(4)函数返回值作为函数参数:若是把函数返回值作为另一个函数的参数,那个函数的返回值必需和参数类型一致。4.内联函数内联函数的声明只要在函数前加上关键字“inline”即可。内联函数必需在函数第一次被挪用前显现并概念。5.函数的重载和默许参数函数重载指函数名相同,但输入参数类型不同或个数不同。默许参数一样在参数列表中给出,intadd(intml=0,intm2=0)。6.函数模板在函数概念时加上Template<typenameT>或Template<classT>。实际调历时能够不指出T的数据类型,也可显式指出。第四章.概念类(1)声明类:class类名{Private:私有数据和函数Public:共有数据和函数Protected:珍惜数据和函数};注意:花括号后面的分号必不可少(2)类外概念成员函数一样形式:返回类型类名::成员函数(参数列表){成员函数的函数体}注意:“::”是作用域运算符,其意思表面其后的成员函数时属于那个特定的类。(3)数据成员的赋值注意:不能在概念数据成员的同时进行赋值,这种做法是错误的。.利用类的对象(1)类不仅能够声明对象,还能够声明对象的引用和对象的指针,其语法与大体数据类型一样。(2)概念类对象的指针语法:类名*对象指针名;(3)数据封装这些内存块中不仅存储数据,也存储代码,这有利于数据和功能平安。同时这些内存块的结构可被用作样板产生跟多对象。3.构造函数(1)为了使对象的状态确信,必需对其进行正确的初始化。初始化的操作和赋值操作是不同的。(2)默许构造函数:类名::类名(){}注意:默许构造函数是系统自动产生的,当用户概念了自己的构造函数系统就不在提供默许构造函数。(3)概念构造函数:构造函数的名字和类名相同,而且概念构造函数的时候不能有返回值类型,即即是void也不能够。(4)类可有多个函数,在类体的声明形式如下:类名(形参1,形参2,形参3……形参门);在程序中说明一个对象时,程序自动挪用构造函数来初始化对象,使程序为对象自动化分派内存。(5)程序员不能在程序中显示的挪用构造函数,构造函数是自动挪用的。(6)构造函数和运算符new:运算符new用于成立生存期可控的对象,new返回那个对象的指针,因此利用new成立动态对象的语法和成立动态变量的情形类似,其不同点是new和构造函数一同起作用。(7)当利用new成立一个动态对象,new第一分派足够对象的内存,然后自动构造函数来初始化这块内存,再返回那个动态对象的地址。(8)构造函数的默许参数:若是程序概念自己的有参构造函数,又想利用无参数形式的构造函数,那么确实是吧构造函数利用默许参数设计。(9)复制构造函数:引用在类中一个很重要的用途是用在复制构造函数中。这一类特殊而且重要的函数通常常利用于使自己已有的对象来成立一个新对象。复制构造函数原型如下:类名::类名(const类名&)4.析构函数(1)析构函数析构函数的名称和类名一样,为了与构造函数区分在析构函数前面加~符号。析构函数不能概念任何返回类型,即便指定为void也不行。一样形式如下:类名::~类名(void)(2)析构函数在对象的生存期终止时被主动挪用。类得对象数组的每一个元素挪用一次构造函数。(3)析构函数和运算符delete:当利用delete删除一个动态对象时,它第一为那个动态对象挪用析构函数,然后再释放那个动态对象占用的内存。这和利用new成立动态对象的进程恰好相反。.成员函数重载及默许函数(1)this指针:C++规定当一个成员函数被调历时,系统自动向它传递一个隐含的参数,该参数是一个指向挪用该函数的指针,从而使成员函数明白该对那个对象进行操作。(2)this指针是C++实现封装的一种机制,它将该对象挪用的成员函数连接在一路,在外部看来,每一个对象都拥有自己的成员函数。一样情形下都省略符号“this->”,而让系统进行默许设置。.一个类的对象作为另一个类的成员(1)类本身确实是一种新的数据类型,因此一个类能够作为另一个类得成员。.类和对象的性质(1)对象的性质:同一类的对象之间能够彼此赋值,能够利用对象数组,能够利用指向对象的指针,利用取址运算符&讲一个对象的地址置于该指针中。对象之间赋值:PointA,B;(25,25);B=A数组对象:PointA[3]利用指针和取址运算符:point*P=&AP->Display();(2)对象能够作为函数参数,若是参数传递采用传对象值的方式,在被挪用函数中对形参所作的改变不阻碍挪用函数中作为实参的对象。若是传得是对象的引用(地址)当参数对象被修改时,相应的实参对象也会被修改。C++建议利用引用,在前面加上const如此能够幸免修改原先的数据成员。(3)对象作为函数参数时,能够利用对象,对象引用,和对象指针。形式为:Voidprint(Pointa乂;}向类成员函数的指针(1)对象是一个完整的实体,C++包括了指向类成员的指针来封装这一对象。能够用指针范文内存中给定类型的任何对象,指向类成员的指针那么用来访问某个特定类的对象中给定类型的任何成员。第六章1.继承(1)单一继承的一样形式:class派生类名:访问操纵基类名{Private:成员声明列表Protected:成员声明列表Public:成员声明列表}(2)派生类的构造函数和析构函数:概念派生类的构造函数:派生类名::派生类名(参数表0):基类名(参数表){函数体;}注意:构造函数(包括析构函数)是不被继承的,因此一个派生类只能挪用他的直接基类的构造函数。当概念派生类的一个对象时,第一挪用基类的构造函数,对基类成员进行初始化,然后执行派生类的构造函数,若是某个基类仍是一个派生类,那么那个进程递归进行。(3)派生类的声明关键字protected以后声明的是类的珍惜成员,珍惜成员具有私有成员和公有成员的双重角色:对派生类得成员函数而言,它是公有成员,能够被访问;而对其他成员函数而言那么仍是私有成员,不能被访问。(4)访问权限和赋值兼容规那么:继承类和基类成员的访问性维持一样。(5)派生的对象能够赋给基类的对象,派生类的对象能够初始化基类的引用,派生类的对象的地址能够赋给指向基类的指针。注意:静态成员被继承,继承类和基类共享同一个静态变量。(6)ias和has-a的区别:(7)公有继承存取权限表基类point的成员Rectangle的成员函数对point的访问基类对象a派生类对象壮外部函数Private成员不可访问不可访问不可访问Protected成员protected不可访问不可访问Public成员public可访问可访问2.私有派生(1)通过私有派生,基类的私有和不可访问成员在派生类中是不可访问的,而公有和珍惜成员这时就成了派生类的私有成员,派生类的对象不能访问继承的基类成员,必需概念公有的成员函数作为接口。注意:虽然派生类的成员函数可通过自概念的函数访问基类的成员,但将该派生类作为基类再继续派生时,这时即可利用公有派生,原基类公有成员在新的派生类中也将是不可访问的。(2)珍惜派生也可利用protected,这种派生都使原先的访问权限降一个级别。(3)多重继承:形式:class类名1:访问操纵类名2,访问操纵 类名3 访问控制类名n{定义派生类自己的成员};3.作用域分辨符合成员名操作符(1)作用域分辨操作的一样形式如下:类名::标示符”类名“能够是任一类和派生类名,“类标示符”是该类中生命的任一成员。(2)派生类支配基类的同名函数基类的成员和派生类新增的成员都有类作用域,基类再外层,派生类在内层。若是派生类概念类一个和基类成员函数同名的新成员函数(因为参数不同属于重载,因此那个地址是指具有相同参数表的成员函数),派生类的新成员函数就覆盖了外层的同名成员函数。在这种情形下,直接利用成员名只能访问派生类的成员函数,只要利用作用域分辨,才能访问基类的同名成员函数。(3)由于二义性,一个类不能从同一个类中直接继承最多一次。注意:若是必需如此,能够利用一个中间类。二义性检查是在访问权限检查之前进行的。因此,成员的访问权限不能解决二义性问题.那么如何解决二义性问题,利用作用域分辨符进行存取。第七章.类模板(1)将一些数据类型从类中分离出来形成的一个通用的数据类型T,并为那个数据类型T设计一个操作集,在编译器编译时与特定的类型联系起来。T不是类,天擦很难过称之为类模板。(2)类模板的成份及语法:class在那个地址是“任意内部类型或用户概念类型”,T可能是任意结构或类。类模板的一样声明形式:template<类模板参数,class类名{类体};(3)类模板的对象:类名<模板实例化参数类型>对象名(构造函数实参列表);类名<模板实例化参数类型>对象名;、、默许或无参构造函数(4)在类体外面概念成员函数时,必需用template重写类模板声明。一样形式如下:template<模板参数>(1) 返回类型类名〈模板类型参数,::成员函数名(函数参数列表){iterator什么向量的一样形式:Vector<type>::reverse_iterator指针名;逆向向量泛型指针利用reverse—iterator,声明方式如下:Vector<数据类型>::reverse_iterator指针名(2)利用typedef能够使声明或概念泛型的手续简单易懂,例如下面泛型指针P:iteratorp;(3)向量的数据类型向量除能够利用大体数据类型之外,还能够利用构造类型,只要符合组成法那么即可。3.向量最大体的操作方式(1)访问向量容量的方式:Size():向量中当前已经寄放的对象个数。Max_Size():返回向量中能够容纳最多对象的个数,一样式寻址空间所容纳的对象的个数。Capacity():返回无需再次分派内存就可以够容纳的对象个数。他的初始值确实是程序员最开始申请的元素个数。它在原先的基础上自动翻倍扩充空间。Max_size>=capacity()>=size()(2)访问向量中对象的方式Front():返回向量中第一个对象Back():返回忆了中的最后一个对象Operator[](size_type,n):返回向量中第n+1个对象(3)在向量中插入对象的方式Push_back(constT&):向向量尾部插入一个对象Insert(iteratorit,constT&):想it所指的向量位置前插入一个对象Insert(iteratorit,size_typen,constT&X):想it所指向量位置前插入n哥值为X的对象。(4)在向量中删除对象的方式Pop_back(constT&):删除向量中最后一个对象。Erase(iteratorit):删除it所指向的容器对象。0。2「()了删除向量中所有的对象,empty()返回true值。第八章一:动态联编中的复制兼容性及名字支配规律(1)对象的内存地址空间中只包括数据成员,并非存储有关成员函数的信息。这些成员函数的地址翻译进程与其对象的内存地址无关。(2)声明的基类指针只能指向基类,派生类只能指向派生类他们的原始类型决定他们只能挪用各自的同名函数。除非派生类没有基类的同名函数。二:动态联编的多态性(1)利用关键字virtual声明的函数,将这种函数称为虚函数。当编译系统含有虚函数时,将为他成立一个虚函数表,表中的每一个元素都指向一个虚函数表的指针。另外,编译系统也为类增加一个数据成员,那个数据成员是一个指向该虚函数表的指针,通常称为vptr。(2)派生类嫩继承基类的虚函数表,而且只若是和基类同名(参数也相同)的成员函数,无论是不是利用virtual声明,他们搜自动成为虚函数。若是继承类没有改写继承基类的虚函数,那么函数指针挪用基类的虚函数。若是派生类改写了基类的虚函数,编译系统将从头为派生类的虚函数成立地址,函数指针会挪用该写过的虚函数。(3)一旦基类概念了虚函数,该基类的派生类中的同名函数也自动称为虚函数。三:虚函数实现多态的条件(1)官架子virtual指示c++编译器对挪用虚函数进行动态连编。这种多态性是程序运行到需要的语句出才动态确信的,因此称为运行时的多态性。只是利用虚函数并非必然产生多态性,也没必要然利用动态联编。(2)产生多态性有如下3哥前提:.类之间的继承关系知足赋值兼容性规那么。.改写同名虚函数。.依照赋值兼容性规那么利用指针。(3)在构造函数和析构函数中挪用虚函数采用静态连编,即他们所挪用的虚函数是自己的类或基类中概念的函数,但不是任安在派生类中概念的虚函数。(4)若是基类的析构函数为虚函数,那么在派生类中未概念析构函数时,编译器所生成的析构函数也为虚函数。四:纯虚函数与抽象类(1)纯虚函数的一样形式如下:Class类名{Virtual函数类型函数名(参数类表)=0;}(2)一个类能够说明多个纯虚函数,包括有虚函数的类称为抽象类。一个抽象类只能作为基类来派生类新类,不能说明抽象类的对象。(3)从一个抽象类派生的类必需提供纯虚函数的实现代码,或在该派生类中仍将它说明为纯虚函数,不然编译器将给犯错误信息。这说明了纯虚函数的派生类仍是抽象类。若是派生类中给出了基类所有纯虚函数的实现,那么该派生类再也不是抽象类。(4)抽象类至少包括一个虚函数,而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中美术结业考试题目及答案
- 2025年信息系统项目管理考试题及答案
- 四川泸州科一试题及答案
- java软件研发面试题及答案
- 股票投资策略与实战试题
- 电子竞技赛事组织作业指导书
- 机电工程实操练习试题及答案
- 项目资源优化配置策略试题及答案
- 西方政治考试的技能提升路径试题及答案
- 机电工程考试试题及答案解析分享
- 部编版语文六年级下册第五单元教材解读大单元集体备课
- 乒乓球的起源与发展
- 工程造价咨询服务入围供应商招标文件模板
- 服装表演音乐游戏课程设计
- 理工英语3-01-国开机考参考资料
- 头颅常见病影像
- 漫画解读非煤地采矿山重大事故隐患判定标准
- 2024年建筑业10项新技术
- 《客舱安全与应急处置》-课件:颠簸的原因及种类
- 《养老护理员》-课件:老年人卫生、环境、食品安全防护知识
- 健康体检科(中心)规章制度汇编
评论
0/150
提交评论