自考知识点总结_第1页
自考知识点总结_第2页
自考知识点总结_第3页
自考知识点总结_第4页
自考知识点总结_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章1. 动态分配内存使用new关键字:1 )为一个对象分配内存:指针名 =new类型名;2 )为一个对象数组分配内 存:指针名=new类型名长度;使用delete关键字:1)释放对象占用内存:delete指针名;2)释放一个对象数组占用内存: delete 指针名。注意:new和delete必须成对出现,且delete释放一个对象时,会调用析构函数。2. 引用数据类型&别名=对象名例如:int a = 56; int &b = a ; 则b是对a的引用3. 什么是左值和右值左值:必须是能被计算和修改的。右值:右值表达式的值必须是固定的。4. 指向常量的指针指向常量的指针一般形式:const

2、 int *p注意:*p不能作为左值。5. 常量指针常量指针一般形式:int * con st p注意:*p不能作为左值。6. 指向常量的常量指针常量指针一般形式:con st int * con st p注意:*p不能作为左值。7. 泛型算法应用于普通数组对数组进行升幕排序,反转数组内容,复制数组等要包含 头文件包对数组进行降幕排序和检索要包含vfun ctio nal头文件包(1 )反转数组内容:reverse(a , a+数组长度)(2) 复制数组内容:copy(a,a +数组长度,b)(3)reverse_copy(a ,a + 数组长度,b);reverse_copy 是将数组的内容

3、从尾到头的逆向复制(4 )数组升幕排序:sort ( a , a+数组长度)(5)数组降幕排序:sort(b , b+ 数组长度,greater()(6)查找数组内容:find(a , a+数组长度,value)(7)数组内容的输出:copy(a , a+ len ,ostream_iterator(cout,字符串);注意:可将ostream_iyerator 理解为输出流控制符,表示数组元素的数据类型字符串 是数组元素间的间隔。8. 数据的简单输入输出C+提高了两种格式控制方式:一种是使用ios_base类提供的接口;另一种是称为操控符的特 殊函数,它的特点是可以直接包含在输出和输入表达式

4、中,因此更加方便。不带参数操控符定义在头文件iostream中,带形式的定义在头文件iomanip中 三是无参数的操控符函数不能带有()名称含义作用Dec设置转换基数为十进制输入/输出oct设置转换基数为八进制输入/输出Hex设置转换基数转换为十 六进制输入/输出En dl输出一个换行符输出Resetiosflags (long flags )清除flag标志位输出Setiosflags (long flags )清除flag标志位输出Setfill (char ch )设置ch为填充字符输出Setprecision(intn )设置浮点数输出精度输出Setw(i nt width)设置输出字

5、符间字段宽 度输出常量及其含义常量名含义Ios base : : left输出域左对齐Ios base : : right输出域右对齐Ios base : : showpoint浮点数输出必须带一个小数点Ios base : : showpos在正数前面加+Ios base : : scientific使用科学计数法表示浮点数Ios base : : fixed使用定点形式表示浮点数第早l.stri ng 对象(1) string 对象包含于#includevstring头文件包中(2) 计算字符串长度的函数:size(),使用方法是 字符串.size()(3) 返回字符串子串的函数:subs

6、tr(起始位置,结束位置)注意:给出的起始位置必须位于字符串中,否则出错。如果结束位置大于字符串的长度,则自动 截取到字符串尾部。(4) 字符串查找函数:find(要查找字符串,开始查找的位置)(5) String类有一对用来指示其元素位置在的基本函数成员:begin()和end(),Begin() 指示第一个元素, end() 指示最后一个元素之后。如果 begin() 不等于 end() ,则算法首先 作用于 begin() 所指元素,然后指向下一个元素,知道 begin() 等于 end() 。所以元素存在于半开 区间 begin,end) 中。(6) char 定义的字符串使用“ 0

7、”作为结束标记。 String 不是。2. 使用 complex 对象(1 )这个对象包含于头文件 #include 中 。 使用方法: complex 对象名(实部值,虚部值) Complex 使用成员函数 real() 和 imag() 函数输出实部和虚部值(2) string 类型的数组的 swap() 成员函数可以交换连个数组分量。第三章1. 函数的参数及其传递方式(1)对象作为函数参数:将对象名作为函数参数,这种传递是单向的,不会改变实参的值。(2)对象指针作为函数参数:将对象地址作为函数参数,这种传递会改变实参的值。(3)引用作为函数参数:定义时,形参是别名;调用时,实参是对象名。

8、实参对象和形参对象 代表同一个对象,所以改变形参对象就是改变实参对象。2. 使用 const 保护数据: 使用 const 修饰符传递参数,只能使用参数而无权修改参数。这样能提 高系统安全。3. 函数返回值(1)函数可以返回一个引用,返回一个引用的主要目的是为了将该函数用在赋值运算符的左 边。函数原型表示方法:数据类型 & 函数名(参数列表 )(2 )返回指针函数:返回值是存储了某种类型数据的内存地址,这种函数称为指针函数。声明函数原型表示方法:类型标示符 * 函数名(参数列表) 注意:当函数返回一个空指针值是,这个可以作为程序异常的标志。(3 )返回对象:函数返回 string 等对象。(4

9、)函数返回值作为函数参数:如果把函数返回值作为另一个函数的参数,这个函数的返回值 必须和参数类型一致。4. 内联函数 内联函数的声明只要在函数前加上关键字“ inline ”即可。内联函数必须在函数第一次被调用前 出现并定义。5. 函数的重载和默认参数 函数重载指函数名相同,但输入参数类型不同或个数不同。 默认参数一般在参数列表中给出, int add(int m1 = 0,int m2 = 0)。6. 函数模板在函数定义时加上 Template 或 Template 。实际调用时可以不指出T 的数据类型,也可显式指出。第四章1.定义类(1)声明类: class 类名 Private :私有数

10、据和函数Public :共有数据和函数Protected :保护数据和函数; 注意:花括号后面的分号必不可少(2)类外定义成员函数 一般形式: 返回类型 类名 :成员函数 (参数列表)成员函数的函数体 注意:“:”是作用域运算符,其意思表面其后的成员函数时属于这个特定的类。(3)数据成员的赋值注意:不能在定义数据成员的同时进行赋值,这种做法是错误的。2. 使用类的对象(1)类不仅可以声明对象,还可以声明对象的引用和对象的指针,其语法与基本数据类型一 样。(2 )定义类对象的指针语法:类名 * 对象指针名; (3)数据封装这些内存块中不仅存储数据,也存储代码,这有利于数据和功能安全。同时这些 内

11、存块的结构可被用作样板产生跟多对象。3. 构造函数(1)为了使对象的状态确定,必须对其进行正确的初始化。初始化的操作和赋值操作是不同 的。(2 )默认构造函数:类名 :类名() 注意:默认构造函数是系统自动产生的,当用户定义了自己的构造函数系统就不在提供默认构造 函数。(3)定义构造函数:构造函数的名字和类名相同,并且定义构造函数的时候不能有返回值类 型,即使是 void 也不可以。(4)类可有多个函数,在类体的声明形式如下:类名(形参1 ,形参 2,形参 3 形参 n );在程序中说明一个对象时,程序自动调用构造函数来初始化对象,使程序为对象自动化分配内存。 (5)程序员不能在程序中显示的调

12、用构造函数,构造函数是自动调用的。(6 )构造函数和运算符 new :运算符 new 用于建立生存期可控的对象, new 返回这个对象的指 针,因此使用 new 建立动态对象的语法和建立动态变量的情况类似,其不同点是 new 和构造函 数一同起作用。(7 )当使用 new 建立一个动态对象, new 首先分配足够对象的内存,然后自动构造函数来初始 化这块内存,再返回这个动态对象的地址。(8)构造函数的默认参数:如果程序定义自己的有参构造函数,又想使用无参数形式的构造函 数,那么就是吧构造函数使用默认参数设计。(9)复制构造函数:引用在类中一个很重要的用途是用在复制构造函数中。这一类特殊而且重

13、要的函数通常用于使自己已有的对象来建立一个新对象。复制构造函数原型如下: 类名:类名 (const 类名 &)4. 析构函数(1)析构函数析构函数的名称和类名一样,为了与构造函数区分在析构函数前面加 符号。析构函数不能定义任何返回类型,即使指定为 void 也不行。一般形式如下: 类名: 类名( void ) ( 2 )析构函数在对象的生存期结束时被主动调用。类得对象数组的每个元素调用一次构造函 数。(3 )析构函数和运算符 delete :当使用 delete 删除一个动态对象时,它首先为这个动态对象调 用析构函数,然后再释放这个动态对象占用的内存。这和使用 new 建立动态对象的过程刚好相

14、 反。5. 成员函数重载及默认函数( 1 )this 指针: c+ 规定当一个成员函数被调用时,系统自动向它传递一个隐含的参数,该参 数是一个指向调用该函数的指针,从而使成员函数知道该对那个对象进行操作。(2)this 指针是 c+ 实现封装的一种机制,它将该对象调用的成员函数连接在一起,在外部看 来,每一个对象都拥有自己的成员函数。一般情况下都省略符号“ this- ” ,而让系统进行默认设 置。6. 一个类的对象作为另一个类的成员(1)类本身就是一种新的数据类型,所以一个类可以作为另一个类得成员。7. 类和对象的性质(1)对象的性质:同一类的对象之间可以相互赋值,可以使用对象数组,可以使用

15、指向对象的 指针,使用取址运算符 & 讲一个对象的地址置于该指针中。对象之间赋值: Point A,B; (25,25); B = A 数组对象: Point A3使用指针和取址运算符: point *P = &A P-Display();(2)对象可以作为函数参数,如果参数传递采用传对象值的方式,在被调用函数中对形参所作 的改变不影响调用函数中作为实参的对象。如果传得是对象的引用(地址)当参数对象被修改 时,相应的实参对象也会被修改。 C+ 建议使用引用,在前面加上 const 这样可以避免修改原来 的数据成员。(3)对象作为函数参数时,可以使用对象,对象引用,和对象指针。形式为:Void

16、print ( Point a);向类成员函数的指针(1) 对象是一个完整的实体,C+包含了指向类成员的指针来封装这一对象。可以用指针范文 内存中给定类型的任何对象,指向类成员的指针则用来访问某个特定类的对象中给定类型的任何 成员。第六章1.继承(1 )单一继承的一般形式:class派生类名:访问控制 基类名Private :成员声明列表Protected :成员声明列表Public :成员声明列表(2)派生类的构造函数和析构函数:定义派生类的构造函数:派生类名:派生类名(参数表0):基类名(参数表)函数体;注意:构造函数(包括析构函数)是不被继承的,所以一个派生类只能调用他的直接基类的构造

17、函数。当定义派生类的一个对象时,首先调用基类的构造函数,对基类成员进行初始化,然后执 行派生类的构造函数,如果某个基类仍是一个派生类,则这个过程递归进行。(3)派生类的声明关键字 protected 之后声明的是类的保护成员,保护成员具有私有成员和公 有成员的双重角色:对派生类得成员函数而言,它是公有成员,可以被访问;而对其他成员函数 而言则仍是私有成员,不能被访问。(4)访问权限和赋值兼容规则:继承类和基类成员的访问性保持一样。(5)派生的对象可以赋给基类的对象,派生类的对象可以初始化基类的引用,派生类的对象的 地址可以赋给指向基类的指针。注意:静态成员被继承,继承类和基类共享同一个静态变量

18、。(6)ias和has-a的区别:(7)公有继承存取权限表基类point的成员Rectangle 的成 员函数对point 的访问基类对象a派生类对象r1外部函数Private 成员不可访问不可访问不可访问Protected 成员protected不可访问不可访问Public成员public可访问可访问2. 私有派生(1)通过私有派生,基类的私有和不可访问成员在派生类中是不可访问的,而公有和保护成员 这时就成了派生类的私有成员,派生类的对象不能访问继承的基类成员,必须定义公有的成员函 数作为接口。注意:虽然派生类的成员函数可通过自定义的函数访问基类的成员,但将该派生类作为基类再继 续派生时,这

19、时即可使用公有派生,原基类公有成员在新的派生类中也将是不可访问的。(2)保护派生也可使用protected ,这种派生都使原来的访问权限降一个级别。(3)多重继承:形式:class类名1:访问控制 类名2,访问控制 类名3,访问控制 类 名 n定义派生类自己的成员;3. 作用域分辨符合成员名操作符(1 )作用域分辨操作的一般形式如下:类名:标示符”类名“可以是任一类和派生类名,“类标示符”是该类中生命的任一成员。(2)派生类支配基类的同名函数基类的成员和派生类新增的成员都有类作用域,基类再外层,派生类在内层。如果派生类定义类 一个和基类成员函数同名的新成员函数(因为参数不同属于重载,所以这里是

20、指具有相同参数表 的成员函数),派生类的新成员函数就覆盖了外层的同名成员函数。在这种情况下,直接使用成 员名只能访问派生类的成员函数,只要使用作用域分辨,才能访问基类的同名成员函数。(3)由于二义性,一个类不能从同一个类中直接继承最多一次。注意:如果必须这样,可以使用一个中间类。二义性检查是在访问权限检查之前进行的。因此, 成员的访问权限不能解决二义性问题那么如何解决二义性问题,使用作用域分辨符进行存取。第七章1.类模板(1) 将一些数据类型从类中分离出来形成的一个通用的数据类型T,并为这个数据类型T设计一个操作集,在编译器编译时与特定的类型联系起来。T不是类,天擦很难过称之为类模板。(2)

21、类模板的成分及语法:class在这里是“任意内部类型或用户定义类型”,T可能是任意结 构或类。类模板的一般声明形式:templatev类模板参数 class类名类体;(3)类模板的对象:类名 对象名(构造函数实参列表)类名 对象名;、默认或者无参构造函数(4 )在类体外面定义成员函数时,必须用template 重写类模板声明。一般形式如下:templatev 模板参数(1)返回类型 类名 :成员函数名(函数参数列表) iterator什么向量的 一般形式:Vector:reverse_iterator 指针名; 逆向向量泛型指针使用 reverse iterator ,声明方法如下: Vect

22、or : reverse_iterator 指针名(2 )使用 typedef 可以使声明或定义泛型的手续简单易懂,例如下面泛型指针 P:iterator p;(3)向量的数据类型向量除了可以使用基本数据类型之外,还可以使用构造类型,只要符合构 成法则即可。3.向量最基本的操作方法(1)访问向量容量的方法:Size ():向量中当前已经存放的对象个数。Max_Size ():返回向量中可以容纳最多对象的个数,一般式寻址空间所容纳的对象的个数。 Capacity ():返回无需再次分配内存就能容纳的对象个数。他的初始值就是程序员最开始申请 的元素个数。它在原来的基础上自动翻倍扩充空间。Max_s

23、ize = capacity() = size()(2)访问向量中对象的方法 Front(): 返回向量中第一个对象Back ():返回想了中的最后一个对象Operator (size_type ,n ):返回向量中第 n+1 个对象(3)在向量中插入对象的方法Push_back ( const T& ):向向量尾部插入一个对象Insert (iterator it , const T& ):想 it 所指的向量位置前插入一个对象Insert (iterator it , size_type n ,const T&X ):想 it 所指向量位置前插入 n 哥值为 X 的对 象。(4)在向量中删

24、除对象的方法Pop_back (const T& ):删除向量中最后一个对象。Erase( iterator it ):删除 it 所指向的容器对象。Clear ()了删除向量中所有的对象, empty ()返回 true 值。第八章一: 动态联编中的复制兼容性及名字支配规律(1)对象的内存地址空间中只包含数据成员,并不存储有关成员函数的信息。这些成员函数的 地址翻译过程与其对象的内存地址无关。(2)声明的基类指针只能指向基类,派生类只能指向派生类他们的原始类型决定他们只能调用 各自的同名函数。除非派生类没有基类的同名函数。二:动态联编的多态性(1 )使用关键字 virtual 声明的函数,将

25、这种函数称为虚函数。当编译系统含有虚函数时,将为 他建立一个虚函数表,表中的每一个元素都指向一个虚函数表的指针。此外,编译系统也为类增 加一个数据成员,这个数据成员是一个指向该虚函数表的指针,通常称为 vptr 。(2)派生类嫩继承基类的虚函数表,而且只要是和基类同名(参数也相同)的成员函数,无论 是否使用 virtual 声明,他们搜自动成为虚函数。如果继承类没有改写继承基类的虚函数,则函数 指针调用基类的虚函数。如果派生类改写了基类的虚函数,编译系统将重新为派生类的虚函数建 立地址,函数指针会调用该写过的虚函数。(3)一旦基类定义了虚函数,该基类的派生类中的同名函数也自动称为虚函数。 三:

26、虚函数实现多态的条件(1 )官架子 virtual 指示 c+ 编译器对调用虚函数进行动态连编。这种多态性是程序运行到需要 的语句出才动态确定的,所以称为运行时的多态性。不过使用虚函数并不一定产生多态性,也不 一定使用动态联编。(2 )产生多态性有如下 3 哥前提:1. 类之间的继承关系满足赋值兼容性规则。2. 改写同名虚函数。3. 根据赋值兼容性规则使用指针。(3)在构造函数和析构函数中调用虚函数采用静态连编,即他们所调用的虚函数是自己的类或 基类中定义的函数,但不是任何在派生类中定义的虚函数。(4)如果基类的析构函数为虚函数,则在派生类中未定义析构函数时,编译器所生成的析构函 数也为虚函数。四:纯虚函数与抽象类(1)纯虚函数的一般形式如下:Class 类名Virtual 函数类型 函数名(参数类表) = 0 ;(2)一个类可以说明多个纯虚函数,包含有虚函数的类称为抽象类。一个抽象类只能作为基类 来派生类新类,不能说明抽象类的对象。(3)从一个抽象类派生的类必须提供纯虚函数

温馨提示

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

评论

0/150

提交评论