自考04737C++程序设计密训高频考点重点汇总.pdf

上传人(卖家):雁南飞1234 文档编号:2500761 上传时间:2022-04-26 格式:PDF 页数:14 大小:1.09MB
下载 相关 举报
自考04737C++程序设计密训高频考点重点汇总.pdf_第1页
第1页 / 共14页
自考04737C++程序设计密训高频考点重点汇总.pdf_第2页
第2页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、目录目录第一章 C+语言简介.1第二章 面向对象的基本概念.3第三章 类和对象进阶.4第四章 运算符重载.6第五章 类的继承与派生.7第六章 多态与虚函数.9第七章 输入/输出流.10第八章 文件操作.11第九章 函数模板与类模板.121 1 / 1313第一章 C+语言简介第一章 C+语言简介知识点名称知识点名称内容内容C+语言的发展简史C+语言的发展简史1.C 语言是 C+语言的前身,在进一步扩充和完善 C 语言的基础上得到了 C+语言。C 语言的基础上得到了 C+语言。2.用 C+语言写成的程序称为源程序,源程序必须经过 C+编译程序翻译成机器语言才能执行。一般需要经过编辑、编译、连接、

2、运行编辑、编译、连接、运行。C+语言的特点C+语言的特点1.与 C 语言相比,C+语言的优点:(1) 从程序运行的稳定性来说,C+语言更安全,它支持过程化编程、面向对象编程面向对象编程和泛型编程。(2) C+语言可运行于多种平台上,如 Windows、MAC 操作系统及 UNIX 的多种版本。(3) C+语言中加入了面向对象面向对象的概念,C+的程序结构与 C 语言的程序结构存在很大差别。基本的输入/输出基本的输入/输出1.C+类中对象C+类中对象:(1) cincin:运算符为,用于键盘输入。函数 scanf();输入流类 istream(2) coutcout:运算符为,用于屏幕输出。函数

3、 printf();输出流类 ostream2.流提取运算符和流插入运算符都是由两个连续的符号组成的,中间不能有其他符号。3.%c%c 是输岀单个字符单个字符的格式控制符。%s%s 是输出字符串字符串的格式控制符。4.当使用当程序中用到 cin 和 cout 时,需要在程序中包含头文件头文件。5.语句以分号“;”结尾。头文件和命名空间头文件和命名空间1.常用的头文件有以下一些:(1)标准输入输出流:。(2)标准文件流:。(3)标准字符串处理函数:。(4)标准数学函数:。程序员还可以定义自己的头文件,并在程序中使用 #include#include 指令将其包含进来。通常,使用尖括号尖括号括住系

4、统提供的头文件系统提供的头文件,使用双引号双引号括住程序员自己定义的头文件自己定义的头文件。2.using 语句引用其他命名空间的标识符的语法格式有两种形式:(1)using 命名空间名:标识符;(2)using namespace 命名空间名;using namespace 命名空间名;强制类型转换运算符强制类型转换运算符1.数据类型级别由低到高分别为: charintfloatdoublecharintfloatdouble。 当不同类型的量进行混合算术运算时,系统自动进行合理的类型转换。编译器就会自动把低级类型向高级类型转换低级类型向高级类型转换。2.使用强制类型转换运算符 static

5、_caststatic_cast 或是 const_castconst_cast 进行转换。(1) static_cast 将一种数据类型转换成另一种数据类型,格式:static_cast(表达式)static_cast 也可以省略。(2) const_cast 去除指针和引用的常量性,但不能去除变量的常量性。:const_cast(表达式)函数参数的默认值函数参数的默认值1.C+语言规定,提供默认值提供默认值时必须按从右至左从右至左的顺序提供,即有默认值的形参必须在形参列表的最后。如果有某个形参没有默认值,则它左侧的所有形参都不能有默认值。2.调用函数时调用函数时,主调函数的实参与被调函数的

6、形参按从左至右从左至右的顺序进行匹配对应。如果实参的个数与形参的个数相等,则它们一一对应。如果实参的个数 m 少于形参的个数 n,则函数原型形参表中最前面的 m 个形参与 m 个实参相对应最前面的 m 个形参与 m 个实参相对应,后面的 n-m 个形参则使用默认值进行初始化n-m 个形参则使用默认值进行初始化。自考押题 vx 344647 公众号/小程序 顺通考试资料2 2 / 13133.无返回值函数无返回值函数:没有返回值的 return 语句只能用在返回类型是 voidvoid 的函数中。有返回值函数有返回值函数: return 语句的第二种形式提供了函数的结果。 只要函数的返回类型不是

7、 void,则该函数内的每条 return 语句必须返回一个值。引用和函数引用和函数参数的传递参数的传递1. 引用引用相当于给变量起了一个别名。定义格式:类型名类型名 & &引用名引用名=同类型的某变量名;2. 在 C+中,函数调用时参数的传递有两种方式:传值和传引用。(1) 传值传值:实际上是传递对象的值对象的值。即将实参的值拷贝给形参。在函数执行过程中,都是对这个拷贝进行操作的,函数执行完毕返回后,形参的值并不拷贝回实参,也就是说函数内部对形参的改变不会影响到函数外实参的值。(2) 传引用传引用:传递对象的首地址值首地址值。函数调用时,实参对象名传递给形参对象名,形参对象名就成为实参对象名

8、的别名,即形参是对应实参的引用,它们是等价的,代表同一个对象,也可以看作是将实参的地址传递给了形参。constconst 与指与指针共同使用针共同使用1. 1.C+语言也可以使用 const 限定访问权限,const 修饰指针变量时,基本含义如下:(1)(1) 如果唯一的唯一的 constconst 位于符号位于符号* *的左侧的左侧,表示指针所指数据是常量,数据不能通过本指针改变,但可以通过其他方式进行修改;指针本身是变量,可以指向其他的内存单元。(2)(2) 如果唯一的唯一的 constconst 位于符号位于符号* *的右侧的右侧,表示指针本身是常量,不能让该指针指向其他内存地址;指针所

9、指的数据可以通过本指针进行修改。(3)(3) 在符号符号* *的左右各有一个的左右各有一个 constconst 时时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。【助记:可以简单地记住 const 的修饰规则:constconst 修饰其左侧的内容修饰其左侧的内容;如果 const 是本行的第一个本行的第一个标识符标识符,则它修饰其右侧右侧的内容。】内联函数内联函数1.引入了内联函数的目的:加快执行速度。加快执行速度。定义内联函数时只需在函数头返回值类型的前面加上关关键字键字 inlineinline。2.内联函数的适用情况:只有几条语句,且频繁

10、调用的小函数只有几条语句,且频繁调用的小函数。3.在 C+中,除具有循环语句具有循环语句、switchswitch 语句语句的函数不能说明为内联函数不能说明为内联函数外,其他函数都可以说明为内联函数。函数的重载函数的重载1.函数重载函数重载:是指在程序的同一范围内声明几个功能类似的同名函数。即前提是函数名相同。可提高代码可读性。函数重载函数重载可使一个函数名具有多种功能一个函数名具有多种功能,即具有“多种形态”,称这种特性为多态性。2.实现函数的重载必须满足下列条件之一:(1)参数表中对应的参数类型参数类型不同。(2)参数表中参数个数参数个数不同。指针和动态指针和动态内存分配内存分配1.指针变

11、量指针变量中保存的是一个地址,有时也称指针指向一个地址。2.使用 newnew 运算符运算符动态申请的内存空间,需要在使用完毕释放。C+提供了 deletedelete 运算符运算符,用来释放动态分配的内存空间。(1) 使用 new 运算符实现动态内存分配。 p=newp=new T T;其中, T 是任意类型名, p 是类型为 T*的指针。(2)使用 new 运算符还可以动态分配一个任意大小的数组:p=newp=new TNTN;其中,T 是任意类型名,p 是类型为 T*的指针,N 代表数组“元素个数”,可以是任何的值为正整数的表达式。(3)C+提供了 delete 运算符,用来释放动态分配

12、的内存空间,基本用法:deletedelete 指针指针。3 3 / 13133.当 delete 释放动态对象数组时,实现为 delete ptr;。4.数组的下标从 0 开始,含 n 个元素的数组的下标范围是从 0n-1。用用 stringstring对象对象处理字符串处理字符串1.字符常量字符常量:用单引号括起来的单个字符或转义字符。字符串常量字符串常量:用双引号括起来。2.大小写字母 ASCIIASCII 码码差 32。3.3.stringstring 类中的常用成员函数类中的常用成员函数(1) int size() const;返回当前字符串的大小(2) int length() c

13、onst;返回当前字符串的长度(3) bool empty() const; 判定当前字符串是否为空(4) findfind();返回 str 在字符串中第一次出现的位置,如果没找到则返回-1(5) insert();在 p 位置插入字符串 S(6) append();将字符串 s 连接到当前字符串的结尾处(7) substrsubstr();返回从 pos 开始的 n 个字符组成的字符串C+C+语言的语言的程序结构程序结构1.程序中必须有且仅有一个有且仅有一个主函数主函数 main()main(),这是程序执行的总入口。2.C+程序中,仍沿用 C 语言的注释风格,即注释有以下两种形式。(1)

14、 从/* /*开始,到开始,到*/ */结束结束,这之间的所有内容都视作注释。(2) 从/ /直到行尾直到行尾,都是注释。第二章第二章 面向对象的基本概念面向对象的基本概念知识点名称知识点名称内容内容结构化程序结构化程序设计设计1.在编写程序时,使用 3 种基本控制结构来构造程序:顺序、选择、循环顺序、选择、循环基本控制结构。面向对象面向对象思想的提出思想的提出1.对象对象是类类的一个实例。对象对象是类的一个具象,类类是对象的一个抽象。2.面向对象技术面向对象技术把问题看成是相互作用的事物的集合相互作用的事物的集合,也就是对象的集合。3.对象特性对象特性:一是状态(也称为属性);二是行为(也称

15、为操作)。状态状态是指对象本身的信息,也称为属性;行为行为是对对象的操作。4.通过对事物的抽象抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),从而得到类类的概念。面向对象面向对象程序设计程序设计的特点的特点1. 1.抽象抽象:在面向对象的程序设计方法中,将同一类事物的共同特点概括出来。对象的特点包括两个方面:属性和操作。C+中使用对象名、属性和操作三要素来描述对象。2.封装封装:将对象的属性及实现细节隐藏起来,只给出如何使用的信息。将数据成员使用 privateprivate 关关键字键字定义,则产生封装性。3.继承继承就是在编写一个“新”类的时候,以现有的类作为基础,使得新类从现

16、有的类“派生”而来,从而达到代码扩充代码扩充和代码复用代码复用的目的。原来的类是基类基类,也称为父类或超类。新类是派生类,也称为子类子类。4.4.多态多态是指不同种类的对象不同种类的对象都具有名称相同的行为名称相同的行为,而具体行为的实现方式却有所不同。类的定义类的定义1.标识符命名规则:标识符命名规则:字母、数字和下划线的组合,大小写敏感,但不能以数字开头不能以数字开头,也不能和系统中使用的关键字完全相同。4 4 / 13132.类中定义的数据和函数称为这个类的成员(数据成员和成员函数)类的成员(数据成员和成员函数)。3.类体外函数定义的前面必须用“类名类名: :”来限定,格式如下:返回值类

17、型返回值类型 类名类名: :成员函数名成员函数名( (参数列表参数列表) )成员函数的函数体程序结构程序结构1.h.h 文件是头文件。2.cpp.cpp 文件是源程序文件;3.C 源程序文件编译而成的目标文件的扩展名是.obj.obj。4.4.可执行代码的文件扩展名为.exe.exe。创建类对象创建类对象的基本形式的基本形式1.使用“类名类名 * *对象指针名对象指针名 = = newnew 类名类名; ;”创建对象时,调用无参的构造函数。如果这个构造函数是由编译器为类提供的,则类中成员变量不进行初始化。2.使用“类名类名 * *对象指针名对象指针名 = = newnew 类名类名();();

18、”创建对象时,也调用无参的构造函数。如果这个构造函数是由编译器为类提供的,则对类中的成员变量进行初始化。访问对象的访问对象的成员成员1.使用使用对象对象:如果变量 a 为结构体对象,且结构体内有元素 b,那么可以使用 a.ba.b 的方式访问元素。2.使用使用指针指针:如果变量 a 为结构体指针,且结构体内有元素 b,那么可以使用 a-ba-b 的方式访问元素。3.使用使用引用引用:访问成员时仍使用点操作符,即“引用名引用名. .成员名成员名”。访问范围说访问范围说明符的含义明符的含义1.privateprivate 私有的私有的 使用它修饰的类的成员仅能在本类内被访问。(默认)(默认)2.p

19、ublicpublic 公有的公有的 使用它修饰的类的成员可以在程序的任何地方被访问。3.protectedprotected 保护的保护的 它的作用介于 public 与 private 之间, 使用它修饰的类的成员能在本类内及子类中被访问。标识符的标识符的作用域与作用域与可见性可见性1.函数原型作用域函数原型作用域:在声明函数原型时形参的作用范围就是函数原型作用域,最小的作用域,最小的作用域。2.局部作用域局部作用域:程序中使用相匹配的一对大括号大括号括起来的一段程序称为块。作用域局限在块内的称为局部作用域。3.类作用域类作用域:类可以被看成是一组有名字的成员的集合,类 X 的成员 m 具

20、有类作用域,对 m 的访问方式有如下 3 种: (1)直接访问直接访问成员 m。 (2)在类外,通过表达式 x.mx.m 或者或者 X:mX:m 来访问(3)在类外类外,可以通过 ptr-mptr-m 表达式来访问。4.4.命名空间作用域命名空间作用域:在命名空间内部可以直接引用当前命名空间中声明的标识符,如果需要引用其他命名空间的标识符,需要使用下面的方式:命名空间名命名空间名: :标识符名标识符名第三章第三章 类和对象进阶类和对象进阶知识点名称知识点名称内容内容构造函数的构造函数的作用作用1.对于 C+中基本数据类型的变量,可以声明全局变量和函数内部的局部变量。(1) 全局变量全局变量:如

21、果没有进行初始化,则系统自动为其初始化为初始化为 0 0。这个工作在程序启动时完成。(2) 局部变量局部变量:系统不进行自动初始化,如果程序员没有设定,则是一个随机值随机值。2.构造函数构造函数的作用:完成对象的完成对象的初始化工作初始化工作(即创建对象)(即创建对象)。构造函数是类中的特殊成员函数,它5 5 / 1313属于类的一部分。3.声明对象后,可以使用 newnew 运算符运算符为对象进行初始化,此时调用的是对象所属类的构造函数构造函数。构造函数的构造函数的定义定义1.构造函数的函数名与类名相同,没有返回值。一个类的构造函数可以有多个一个类的构造函数可以有多个,即构造函数允许允许重重

22、载载。即这些构造函数之间的关系是重载关系。2.当类中没有定义任何构造函数时,系统会自动添加一个参数表为空、函数体也为空的构造函数,称为默认构造函数默认构造函数。3.定义构造函数的形式:类名类名: :类名类名( (形参形参 1, 1,形参形参 2,2, ,形参形参 n)n)x1=形参 1;x2=形参 2;xn=形参 n;构造函数的构造函数的使用使用1.如果程序中声明了对象数组数组,即数组的每个元素每个元素都是一个对象。2.创建对象对象时,调用一次一次构造函数。3.对于指针指针,仅是说明了这个指针,并未与对象相关,所以并不调用构造函数不调用构造函数。4.如果构造函数的定义中给出了参数的默认值,那么

23、使用构造函数创建对象时,对应的实参是可以省略的。此时,使用默认值当作对应实参的值使用默认值当作对应实参的值。复制复制构造函数构造函数1.复制构造函数复制构造函数是构造函数的一种,也称为拷贝构造函数拷贝构造函数。它的作用是使用一个已存在的对象去初始化另一个正在创建的对象。2.复制构造函数只有一个参数,参数类型是本类的引用本类的引用。即引用类自己。3.对于类 A 而言,复制构造函数的原型复制构造函数的原型如下:(格式一):A:A(const A&)(格式二):A:A(A &)析构函数析构函数1.与构造函数一样,析构函数析构函数也是成员函数的一种,它的名字也与类名相同,但要在类名前面加类名前面加一一

24、个个“”字符字符,以区别于构造函数。2.析构函数的特点析构函数的特点:没有参数没有参数,也没有返回值也没有返回值。析构函数不可以多于一个,不会有重载的析构函数不会有重载的析构函数。默认析构函数的函数体为空。一个类中有且仅有一个析构函数有且仅有一个析构函数。3.创建对象创建对象时自动调用构造函数构造函数,在对象消亡对象消亡时自动调用析构函数析构函数。静态变量静态变量1.staticstatic 用来声明静态变量静态变量。2.局部变量:块内定义局部变量:块内定义的变量,从定义之处开始到本块结束处为止是局部变量的作用域。3.3.全局变量:全局变量:指在所有花括号之外花括号之外声明的变量,其作用域范围

25、是全局可见的,即在整个项目文件内都有效。类的类的静态成员静态成员1.类的静态成员有两种:静态成员变量静态成员变量和静态成员函数静态成员函数。2.给静态成员变量赋初值赋初值的格式:类型类型 类名类名: :静态成员变量静态成员变量= =初值初值;3.访问访问类静态成员格式格式:(1)类名:静态成员名(2)对象名.静态成员名(3)对象指针-静态成员名6 6 / 13134.4.静态成员变量只有一份,被同类所有对象共享静态成员变量只有一份,被同类所有对象共享。甚至可以在还没有任何对象生成时就访问一个类的静态成员。常量成员和常量成员和常引用成员常引用成员1.使用关键字 constconst 修饰的量称为

26、常量。2.在对象被创建以后,其常量成员变量的值就不允许被修改不允许被修改,只可以读取其值。对于常量对象,只能调用常量函数。总之,常量成员变量的值不能修改,常量对象中的各个属性值均不能修改。友元友元1.友元使用关键字关键字 friendfriend 标识。2.友元的概念破坏了类的封装性和信息隐藏,但有助于数据共享,能够提高程序执行的效率提高程序执行的效率。友元函数友元函数1.在友元函数内部可以直接访问本类对象的直接访问本类对象的私有成员私有成员。2.2.在类定义中,将一个全局函数声明为本类友元函数:friendfriend 返回值类型返回值类型 函数名函数名( (参数表参数表); );当有某类A

27、 的定义后,将类 A 的成员函数说明为本类的友元函数:friendfriend 返回值类型返回值类型 类类 A:A:类类 A A 的成员的成员函数名函数名( (参数表参数表); );3.一个类的成员函数(包括构造函数和析构函数)可以通过使用 friend 说明为另一个类的友元,但友元函数本身并不是类的成员函数,但允许访问类中的所有成员。友元类友元类1. 1.在类定义中声明友元类的格式如下:friendfriend classclass 类名类名; ;2.友元类的关系是单向的友元类的关系是单向的。若说明类 B 是类 A 的友元类,不等于类 A 也是类 B 的友元类。友元类友元类的关系不能传递的关

28、系不能传递,即若类 B 是类 A 的友元类,而类 C 是类 B 的友元类,不等于类 C 是类 A 的友元类。thisthis 指针指针1.C+语言规定,当调用一个成员函数时,系统自动向它传递一个隐含的参数隐含的参数。该参数是一个指向调用该函数的对象调用该函数的对象的指针的指针,称为 thisthis 指针指针,从而使成员函数知道对哪个对象进行操作。2.目的目的:使用 this 指针,保证了每个对象可以拥有自己的数据成员,但处理这些数据成员的代码可以被所有的对象共享对象共享。3.3.在非静态成员函非静态成员函数内部可以直接使用 this 关键字,this 就代表指向该函数所作用的对象的指针。第四

29、章第四章 运算符重载运算符重载知识点名称知识点名称内容内容重载运算符重载运算符的概念的概念1.可重载的运算符可重载的运算符:(1) 双目算术运算符+(加),-(减),*(乘),/(除),(取模)(2) 关系运算符=(等于),!=(不等于),(大于),=(大于等于)(3) 逻辑运算符|(逻辑或),&(逻辑与),!(逻辑非)(4) 单目运算符+(正),-(负),*(指针),&(取地址)(5) 自增自减运算符+(自增),-(自减)(6) 2.不可重载的运算符不可重载的运算符:(1) 成员访问运算符.(2) 成员指针访问运算符.*,-*(3) 域运算符:(4) 长度运算符sizeof7 7 / 131

30、3(5) 条件运算符?:(6) 预处理符号#3.运算符函数的格式如下运算符函数的格式如下:返回值类型 operatoroperator 运算符(形参表)函数体4.4.重载运算符的使用重载运算符的使用(1) 如果定义为全局函数全局函数,对于二元运算符,需要为函数传递两个参数两个参数。(2) 如果定义为类的成员函数类的成员函数,对于二元运算符,则只需要传递一个参数一个参数。重载运算符重载运算符的规则的规则1.重载后运算符的含义应该符合原有的用法习惯。2.运算符重载不能改变运算符原有的语义,包括运算符的优先级和结合性。3.运算符重载不能改变运算符操作数的个数及语法结构。4.不能创建新的运算符,即重载

31、运算符不能超出 C+语言允许重载的运算符范围。5.重载运算符“() ()”“ ”“-”或者赋值运算符或者赋值运算符“= =”时时,只能只能将它们重载为成员函数成员函数,不能重载为全局函数。6.运算符重载不能改变该运算符用于基本数据类型对象的含义。重载流插入重载流插入运算符和流运算符和流提取运算符提取运算符1.重载流插入运算符的一般格式如下:ostreamostream &operator(ostream&operator(ostream & & output,output, 类名类名& &对象名)对象名)return output;重载自增、重载自增、自减运算符自减运算符1.自增运算符“+”有

32、前置前置和后置后置之分。例如,obj 是一个类 CDemo 的对象,“+obj+obj”的返回值应该是 obj 被修改后的值,而“obj+obj+”的返回值应该是 obj 被修改前的值。2.使用类运算符”+”运算符,使用函数调用方式,例:若前缀:+n+n 为为 n.operator+()n.operator+();若后缀:n+n+为为 n.operator+(0)n.operator+(0);第五章第五章 类的继承与派生类的继承与派生知识点名称知识点名称内容内容继承的概念继承的概念1.使用基类派生新类时,除构造函数和析构函数外除构造函数和析构函数外,基类的所有成员所有成员自动自动成为派生类的成

33、员,包括基类的成员变量和成员函数。2.派生类派生类可以重新定义或修改基类中已有的成员,包括可以改变基类中成员的访问权限改变基类中成员的访问权限。当然派生类需要定义自己的构造函数和析构函数。3.派生类的成员覆盖基类的同名成员。覆盖也称为重定义重定义或是重写重写。对于成员函数来说,派生类既继承了基类的同名成员函数,又在派生类中重写了这个成员函数。这称为函数重定义函数重定义,也称为同同名隐藏名隐藏。派生类派生类1.在 C+语言中,从基类派生派生类从基类派生派生类的一般格式如下:8 8 / 1313的定义的定义classclass 派生类名派生类名: : 继承方式说明符继承方式说明符 基类名基类名类体

34、;2.2.定义虚基类虚基类的一般格式如下:classclass 派生类名:派生类名:virtualvirtual 派生方式派生方式 基类名基类名派生类体;继承关系继承关系的特殊性的特殊性1.基类的友元不一定不一定是派生类的友元;基类的成员函数是某类的友元函数,则其作为派生类继承的成员函数仍是某类的友元函数友元函数。2.如果基类的静态成员是公有的或是保护的公有的或是保护的,则它们被其派生类继承为派生类的静态成员。访问这些成员时,通常用“ : ”的方式引用或调用。3.除基类的构造函数和析构函数外,派生类派生类可以继承基类基类的全部成员变量和成员函数。多重继承多重继承1.C+中有两种继承:单一继承和

35、多重继承。(1) 对于单一继承单一继承,派生类只能有一个基类一个基类;(2) 对于多重继承多重继承,派生类可以有多个基类多个基类。指一个派生类同时有一个以上的基类,多个基类中的所有成员除构造函数和析构函数外都被派生类继承。访问控制访问控制1.继承方式不同,基类中的成员在派生类中的访问权限可能也不同。(1)当类的继承方式为公有继承公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变不变,而基类的私有成员在基类外不可直接访问不可直接访问。各成员派生类中基类与派生类外基类的公有成员直接访问直接访问基类的保护成员直接访问调用公有函数访问基类的私有成员调用公有函数访问调用公有函数访问(2)当类的

36、继承方式为私有继承私有继承时,基类中的公有成员以私有成员身份出现在派生类中。各成员第一级派生类中第二级派生类中基类与派生类外基类的公有成员直接访问不可访问不可访问基类的保护成员直接访问不可访问不可访问基类的私有成员调用公有函数访问不可访问不可访问(3)保护继承保护继承中中,基类的公有成员公有成员以保护成员的身份出现在派生类中,而基类的私有成员私有成员不可以不可以直接直接访问。访问。构造函数与构造函数与析构函数析构函数1.派生类构造函数必须对这三类成员进行初始化,其执行顺序:调用基类构造函数;调用子对象的构造函数;派生类的构造函数体。调用基类构造函数;调用子对象的构造函数;派生类的构造函数体。2

37、.在执行一个派生类的构造函数之前,总是先执行基类基类的的构造函数构造函数。派生类对象消亡时,先执行先执行派派生类生类的的析构函数析构函数,再执行基类的析构函数。类与类之间类与类之间1.继承关系继承关系也称为“is is a a”关系或“是”关系。9 9 / 1313的关系的关系2.组合关系组合关系也称为“hashas a a”关系或“有”关系,表现为封闭类,即一个类以另一个类的对象作为成员变量。多层次的多层次的派生派生1. 1.在 C+中,派生可以是多层次的。如类 A 派生类 B,类 B 可以再派生类 C,类 C 又能够派生类D,以此类推。在 C+中,类之间的继承关系具有传递性传递性。第六章第

38、六章 多态与多态与虚虚函数函数知识点名称知识点名称内容内容多态多态1.多态分为:(1)编译时多态编译时多态:静态绑定/早绑定,主要是指函数的重载(包括运算符的重载)。(2)运行时多态运行时多态:动态绑定/晚绑定,和继承、虚函数等概念有关。2.不论是静态还是动态,多态性肯定是调用同名的函数同名的函数。3.在类之间满足赋值兼容的前提下,实现动态绑定必须满足以下两个条件实现动态绑定必须满足以下两个条件。(1) 必须声明虚函数虚函数。(2) 通过基类类型的引用引用或者指针指针调用虚函数。虚函数虚函数1.所谓“虚函数虚函数”,就是在函数声明时前面加了 virtualvirtual 关键字关键字的成员函数

39、。2.声明虚函数成员的一般格式格式:virtualvirtual 函数返回值类型函数返回值类型 函数名函数名( (形参表形参表); );3.通过基类指针指针或基类引用引用调用虚函数时,都会产生动态多态。4.虚函数的注意事项虚函数的注意事项:(1) 虚函数一般不声明为内联函数。(2) 派生类重写基类的虚函数实现多态,要求函数名、参数列表及返回值类型要完全相同。(3) 基类基类中定义了虚函数,在派生类中该函数始终保持虚函数的特性中定义了虚函数,在派生类中该函数始终保持虚函数的特性。(4) 只有类的非静态成员函数才能定义为虚函数,静态成员函数和友元函数不能定义为虚函数。(5) 如果虚函数的定义是在类

40、体外, 则只需在声明函数时添加 virtual 关键字, 定义时不加 virtual 关键字。(6)构造函数不能定义为虚函数。(7)不要在构造函数和析构函数中调用虚函数。(8)最好将基类的析构函数声明为虚函数。多态的使用多态的使用1.因为类的成员函数之间是可以互相调用的,所以在普通成员函数普通成员函数(静态成员函数、构造函数和析构函数除外)中调用其他虚成员函数也是允许的,并且是多态多态的。2.在构造函数构造函数和析构函数析构函数中可以调用虚函数,但这样调用的虚函数不是多态的。虚析构函数虚析构函数1.C+允许声明虚析构函数。声明虚析构函数的一般格式:virtualvirtual 类名类名();(

41、);虚析构函数没有返回值类型,没有参数。2.如果一个类的析构函数是虚函数析构函数是虚函数,则由它派生的所有子类的析构函数也是虚析构函数子类的析构函数也是虚析构函数。纯虚函数纯虚函数1.纯虚函数纯虚函数:声明在基类中的虚函数,没有具体的定义,而由各派生类根据实际需要给出各自的定义。2.声明纯虚函数的一般格式:virtualvirtual 函数类型函数类型 函数名函数名( (参数表参数表)=0;)=0;3.定义纯虚函数的几个要素是:使用 virtual 关键字进行修饰;函数定义中要有“=0”,且没有函数体,大括号也没有。抽象类抽象类1.包含纯虚函数包含纯虚函数的类称为抽象类抽象类。即抽象类至少含有

42、一个纯虚函数至少含有一个纯虚函数。1010 / 13132.抽象类的派生类中,如果没有给出全部纯虚函数的定义,则派生类继续是抽象类派生类继续是抽象类。直到派生类中给出全部纯虚函数定义后,才能实例化一个对象。虽然不能创建抽象类的对象,但可以定义抽象定义抽象类的类的指针指针和和引用引用。这样的指针和引用可以指向并访问派生类的成员,这种访问具有多态性。虚基类虚基类1.定义虚基类的一般格式:classclass 派生类名:派生类名:virtualvirtual 派生方式派生方式 基类名基类名派生类体;第七章第七章 输入输入/ /输出流输出流知识点名称知识点名称内容内容流类简介流类简介1.C+的标准库中

43、有一个面向对象的输入/输出软件包,即 I/O 流类库,输入和输出均是通过流流完成的。流是 I/O 流类的核心概念。(1) 输出操作输出操作是将一个对象转换成转换成一个字符序列,输出到指定对象。(2) 输入操作输入操作是从某个对象接收到接收到一个字符序列,然后将其转换为相应对象所要求的格式。2.常见的头文件有以下 3 个:(1)iostreamiostream:包含操作所有输入输入/ /输出流输出流所需的基本信息基本信息。(2)iomanipiomanip:包含格式化 I/O 的带参数流操纵符带参数流操纵符,可用于指定数据输入/输出的格式。(3)fstreamfstream:包含处理文件文件的有

44、关信息,提供建立文件、读/写文件的各种操作接口。标准流对象标准流对象1.C+在头文件 iostream 中为用户预定义了 4 个标准流对象,分别是:(1) cincin(标准输入流)(2) coutcout(标准输出流)(3) cerrcerr(非缓冲错误输出流)(4) clogclog(缓冲错误输出流)流操纵符流操纵符1.进制数与前缀进制数与前缀(1) 十六进制常量前缀 0 x(2) 十进制常量无前后缀(3) 八进制常量前缀 0(4) 长整型常量后缀 L 或 l2.2.iostreamiostream 中常用流操纵符中常用流操纵符(1) endl输出一个新行符,并清空流(2) ends输出字

45、符串结束,并清空流(3) flush清空流缓冲区(4) dec *以十进制形式输入或输出整数(5) hex以十六进制形式输入或输出整数(6) oct以八进制形式输入或输出整数(7) ws提取空白字符3.常用的用于格式控制的流操纵符常用的用于格式控制的流操纵符1111 / 1313setwsetw(),setprecisionsetprecision(),setfill(),setbase(),setiosflags,resetiosflags 等。在头文件头文件 iomaniiomanip p中还定义了一些用于格式控制的流操纵符。调调用用 coucout t 的的成员函数成员函数1. 1.os

46、tream 类提供了在 cout 中控制输出格式的成员函数。常见的用于控制格式的成员函数用于控制格式的成员函数原型:(1)设置和返回标志字:flags()(2)设置标志位:setf()(3)清除标志位:unsetf()(4)设置和返回输出宽度:width()(5)设置填充字符:fill()(6)设置数据显示精度:precision()2.ostream 类还有一些输出流的成员函数输出流的成员函数,其原型如下:(1)字符插入:ostream & putput(char c); 成员函数 put()的功能是向输出流中插入一个字符 c。如果给出的参数类型为 int,则输出该输出该 ASCIIASCI

47、I 码码对应的字符,函数返回输出流对象的引用。(2)数据块插入:ostream & writewrite(const char * pch, int nCount); 成员函数 write()的功能是向输出流中插入 pch 指向的一个长度为 nCount 的字节序列。调用调用 cincin 的的成员函数成员函数1.istream 类提供了一些公有成员函数,它们可以以不同的方式提取输入流中的数据:(1) get()get()函数函数:此函数从输入流中读入一个字符(包括空白字符),返回值就是该字符的 ASCII 码。(2) getline()getline()函数函数:是从输入流中的当前字符开始读

48、取 bufSize-1 个字符到缓冲区 buf,或读到读到nn为为止止(哪个条件先满足即按哪个执行)。函数会在 buf 中读入数据的结尾自动添加串结束标记串结束标记00。(3) eof()eof()函数函数:用于判断输入流是否已经结束。返回值为 true 表示输入结束。(4) ignore()ignore()函数函数:作用是跳过输入流中的 n 个字符。第八章第八章 文件操作文件操作知识点名称知识点名称内容内容文件的概念文件的概念1.C+根据文件数据的编码方式不同分为文本文件文本文件和二进制文件二进制文件。2.根据存取方式不同分为顺序存取文件顺序存取文件和随机存取文件随机存取文件。3.对文件的基

49、本操作分为读文件读文件和写文件写文件。所谓“读文件”就是将文件中的数据读入内存之中,也称为“输入”。所谓“写文件”就是将内存中的数据存入文件之中,也称为“输出”。C+C+文件流类文件流类1、C+标准类库中有 3 个流类可以用于文件操作,这 3 个类统称为文件流类,分别如下:(1) ifstreamifstream:用于从文件中读取读取数据。(2) ofstreamofstream:用于向文件中写入写入数据。(3) fstreamfstream:既可用于从文件中读取读取数据,又可用于向文件中写入写入数据。2、使用这 3 个流类时,程序中需要包含 fstreamfstream 头文件头文件。3、使

50、用文件的基本步骤:打开(open)文件操作文件关闭(close)文件。打开文件打开文件1. 1.打开文件的目的:(1)建立关联建立关联。通过指定文件名,建立起文件和文件流文件和文件流对象的关联。(2)指指明文件的使用方式和文件格式。明文件的使用方式和文件格式。2.打开文件的方式:(1) 先建立流对象,然后调用 open()函数连接外部文件。格式:流类名流类名 对象名对象名; ;1212 / 1313对象名对象名.open(.open(文件名文件名, ,模式模式); );(2) 调用流类带参数的构造函数,在建立流对象的同时连接外部文件。格式如下:流类名流类名 对象名对象名( (文件名文件名, ,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 各类题库
版权提示 | 免责声明

1,本文(自考04737C++程序设计密训高频考点重点汇总.pdf)为本站会员(雁南飞1234)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|