2022年c++期末复习资料.docx

上传人:C****o 文档编号:49993316 上传时间:2022-10-12 格式:DOCX 页数:12 大小:51.71KB
返回 下载 相关 举报
2022年c++期末复习资料.docx_第1页
第1页 / 共12页
2022年c++期末复习资料.docx_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《2022年c++期末复习资料.docx》由会员分享,可在线阅读,更多相关《2022年c++期末复习资料.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -1、 面对对象相关概念:类:具有相同属性和行为的对象集合,把数据和操作封装在一起 对象:数据 +操作;面对对象特点:抽象,封装,继承,多态2、输入输出 :输入 cinab; 输入不能有 3、const 修饰符 :endl ; 输出 coutabendl; 指向常量的指针:如 const char *p= ” abcd” ; 不答应转变指针所指的常量,如 p3= x是错误的,但是可以转变指针 p 的值 p=“ mn” ;是对的;常指针: char *const p =“ abcd” ;指针本身是常量,不能移动,

2、但是所指内容为变量,可以更换,如p3= x是对的;常数据成员,常成员函数,常对象:在类中声明的数据或函数可以是常量,对于常数据成员要用初始化列表初始值,在C+类中, const 关键字可以修饰对象和成员函数,const 对象不能被修改, 一个常对象只能调用它的常成员函数,不能调用一般成员函数;常成员函数格式:类型说明符 函数名(参数表)const ;常成员函数可以参与重载;常成员函数不能更新对象的数据成员,也不能调用该类中的一般成员函数,const 成员函数不能修改数据成员;4、内联函数 :在函数说明前冠以关键字inline,目的是排除函数调用时的系统开销,提高运行速度;留意:内联函数体内不能

3、有循环语句和switch语句;内联函数的声明必需显现在内联函数第一次被调用之前;类结构中全部在类说明体内定义的函数都是内联函数;5、带有缺省参数值的函数:在说明函数原型时,可以给一个或多个形参指定缺省值,调用时如给出实参,就采纳实参值,否就采纳预先给出的默认形参值;如某一个类point的构造函数原型为pointint x=1, int y=0;就参数 x 和 y 的缺省值为1 和 0. 留意:在函数原型中,全部缺省值的参数都必需从右往左缺省,在函数调用时从左往右将实参与形参结合 , 如 pointint x=1, int y=0 X=x;Y=y;, 那么执行 point p3之后 p 的 X

4、和Y值分别为3,0. 6、函数重载 :C+答应功能相近的函数在相同的作用域内以相同函数名声明,从而形成重 载;留意:重载函数的形参必需不同 : 个数不同或类型不同;编译程序将依据实参和形参的类型及个 数的正确匹配来挑选调用哪一个函数;例:void addint m, int n cout”two integer numbers m+n=”m+nendl; void addfloat x,float y cout” two float numbers m+n=” m+n 成员名“ 方式拜访 public 属性的成员11、构造函数 构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初

5、始化为一个特 定的状态;特点:在对象创建时或 new 类名时由系统自动调用;假如程序中未声明,就系统自动产生出一个默认形式的构造函数,只有程序中定义细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -有构造函数,系统不再自动生成缺省的构造函数缺省构造函数类名:缺省构造函数名() 函数名必需与类名相同 不能指定函数返回类型 参数可以有, 也可以无, 参数可以带默认形参值,所以一个类可以有多个构造函数,从而构造函数可以

6、重载;如有一个类 A,当执行语句 A a ;时将自动调用该类的无 参构造函数或缺省的构造函数或带默认形参值的构造函数,但无参构造函数和带默认形参值的构造函数二者同时显现简洁显现调用时引起二义性答应是内联函数 利用构造函数创建对象有两种方法:用构造函数之间创建对象:类名对象名 实参表 ;如 point p(1,2);利用构造函数创建对象时,通过指针和new 来实现:类名 * 指针变量 =new 类名 实参表 ;如 A *p=new A1 ,2 ;留意类 A 声明对象指针并不调用构造函数,而是通 过 new 创建暂时对象调用构造函数,所以该语句只调用构造函数 1 次 12、拷贝构造函数 拷贝构造函

7、数是一种特别的构造函数,其形参为本类的对象引用,作用是用已经存在的对 象初始化另一个同类的新对象;类名(类名 & 对象名);/ 拷贝构造函数如类 A 拷贝构造函数为: A A &x;拷贝构造函数特点:也是构造函数,所以其函数名与类名相同,没有返回值 只有一个参数,并且是本类的对象引用,所以一个类只能有一个,不能重载 每一个类都有一个拷贝构造函数,假如没有定义,系统会自动生成一个缺省的 调用拷贝构造函数 3 种情形:当用类的一个对象去初始化该类的另一个对象时系统自动调用拷贝构造函数实现拷贝 赋值;如函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数;当函数的返回值是类对象时

8、,系统自动调用拷贝构造函数;深拷贝和浅拷贝:缺省的拷贝构造函数所实现的数据成员逐一赋值就是浅拷贝,当类中有 指针时,需要自定义拷贝构造函数,谓深拷贝;13、析构函数 完成对象被删除前的一些清理工作;特点:析构函数与构造函数名相同,但它前面必需加一个波浪号 析构函数没有返回值 析构函数没有参数,所以一个类中只能有一个析构函数,所以析构函数不能重载当撤销对象时,或delete对象指针编译系统自动调用析构函数假如没有定义析构函数,系统自动生成一个缺省的析构函数 类名:缺省析构函数名() 14、成员初始化列表 在声明类时,不能在数据成员的声明中对数据成员进行初始化,一般在构造函数中用赋值 语句进行,但

9、对于内嵌的对象、常量、引用数据成员需要在构造函数的成员初始化列表中进行;带有成员初始化列表的构造函数一般格式:类名:构造函数名(参数表):(成员初始化列表) ; 15、 this 指针 隐含于每一个类的成员函数中的特别指针;16、对象数组 :类名 数组名 下标值 ;该数组中每个元素都是对象,都会自动调用构造函 数,当数组中每一个对象被删除时,系统都要调用一次析构函数;拜访方法:数组名 下标 . 成员名 17、对象指针: 类名 * 对象指针名;定义对象指针不会调用构造函数利用对象指针可以拜访单个对象成员,如 point *p ,ob;p=&ob;p-show;或*p.show; 也可以用对象指针

10、拜访对象数组,对象可以作为函数参数,对象指针也可以细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -18、指向类成员的指针:通过指向成员的指针只能拜访公有成员指向类的非静态成员的指针指向公有数据成员的指针:类型说明符类名: *数据成员指针名;说明指针应当指向哪个成员:指针名 =&类名 : 数据成员名;通过对象名(或对象指针)与成员指针结合来拜访数据成员:对象名 .* 类成员指针名 或:对象指针名 -* 类成员指针

11、名声明指向公有函数成员的指针:类型说明符 类名 :* 指针名 参数表 ;初始化:指针名 =类名 : 函数成员名; 通过对象名 (或对象指针) 与成员指针结合来拜访函数成员: 对象名 .* 类成员指针名 参数表 或: 对象指针名 -* 类成员指针名 参数表 指向类的静态成员的指针对类的静态成员的拜访不依靠于对象,可以用一般的指针来指向和拜访静态成员19、静态成员静态数据成员用关键字 static声明,该类的全部对象爱护该成员的同一个拷贝,必需在类外定义和=初始化,用 :来指明所属的类;初始化格式:数据类型类名:静态数据成员名值;静态数据属于整个类,因此既可以通过某个对象,或对象指针去拜访,也可以

12、使用类名:静态数据成员名格式去拜访它;静态成员函数一般来说,静态成员函数只能引用属于该类的静态数据成员或静态成员函数;静态成员函数没有this指针:静态成员- 静态成员类外代码可以使用类名和作用域操作符来调用静态成员函数;如类名:函数名(实参表)或者对象;静态成员函数名(实参表)或对象指针函数名(实参表)如某类 A:class A private: static int totalW; int w;public: A int m w = m ; totalW +=m; A totalW - =w ; static int getT return totalW ; ;int A: totalW

13、=0;void main A al 50; cout A: getT endl; A a2 100; cout a2.getT endl; 20、友元友元是 C+供应的一种破坏数据封装和数据隐匿的机制;提高程序运行效率友元函数不是当前类的成员函数,而是对立于当前类的外部函数,它可以拜访该类的全部成员,包括公有,私有,受爱护;友元函数不是类的成员,所以没有this指针,它不能直接引用对象成员的名字,它必需通过入口参数传递进来的对象名或对象指针来引用该对象的成员;细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 7 页 - - - - - -

14、- - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -如某类 girl的友元函数disp 格式: void dispgirl &g; 友元成员一个类的成员函数作为另一个类的友元,它既可以拜访本类的全部成员,仍可以拜访friend声明所在类的全部成员友元类 如一个类为另一个类的友元,就此类的全部成员都能拜访对方类的私有成员;友元关系是单向的,不具有交换性和传递性 21、派生类继承的目的:实现代码重用;派生的目的:当新的问题显现,原有程序无法解决(或 不能完全解决)时,需要对原有程序进行改造;派生类的声明class 派生类名:继承方式基类名 成员声明;

15、;继承方式:三种继承方式 省略默认为私有继承 ,公有继承,私有继承,爱护继承不同继承方式的影响主要表达在:内部拜访:派生类成员对基类成员的拜访权限对象拜访:通过派生类对象对基类成员的拜访权限在派生类中能够直接拜访的是基类的公有成员和爱护成员公有继承 public 基类的 public和 protected成员的拜访属性在派生类中保持不变,但基类的 private成员不行直接拜访;派生类中的成员函数可以直接拜访基类中的public和 protected成员, 但不能直接拜访基类的 private成员;成员;通过派生类的对象只能拜访基类的public私有继承 private 基类的 public和

16、 protected成员都以 private身份显现在派生类中,但基类的private成员不行直接拜访;派生类中的成员函数可以直接拜访基类中的public和 protected成员, 但不能直接拜访基类的 private成员;通过派生类的对象不能直接拜访基类中的任何成员;爱护继承 protected 基类的 public和 protected成员都以protected身份显现在派生类中,但基类的private成员不行直接拜访;派生类中的成员函数可以直接拜访基类中的public和 protected成员, 但不能直接拜访基类的 private成员;通过派生类的对象不能直接拜访基类中的任何成员 2

17、2、类型兼容规章一个公有派生类的对象在使用上可以被当作基类的对象,反之就禁止;详细表现在:派生类的对象可以被赋值给基类对象;派生类的对象可以初始化基类的引用;指向基类的指针也可以指向派生类;通过基类对象名、指针只能使用从基类继承的成员 23、多继承时派生类的声明class 派生类名:继承方式1 基类名 1,继承方式2 基类名 2,. 成员声明; 留意:每一个“ 继承方式” ,只用于限制对紧随其后之基类的继承; 第 5 页,共 7 页 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - -

18、 - - - - - - - - - - - -24、继承时的构造函数基类的构造函数不被继承,派生类中需要声明自己的构造函数;声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成;派生类的构造函数需要给基类的构造函数传递参数,要看详细情形 在类继承过程中,当基类只有带默认值的有参构造函数时,派生类的构造函数可能为:默认构造函数,不带参数构造函数,带参数构造函数;当基类只有不带默认值的有参构造函数时,派生类必需有构造函数单一继承时的构造函数派生类名 : 派生类名 基类所需的形参,本类成员所需的形参 本类成员初始化赋值语句; ;多继承且有内嵌对象时

19、的构造函数: 基类名 参数表 派生类名 : 派生类名 基类 1 形参,基类 2 形参, . 基类 n 形参,本类形参 : 基类名 1 参 数, 基类名 2 参数 , . 基类名 n 参数 ,内嵌对象数据成员的初始化 本类成员初始化赋值语句; ;构造函数的调用次序 1 调用基类构造函数,调用次序依据它们被继承时声明的次序(从左向右);2 调用内嵌成员对象的构造函数,调用次序依据它们在类中声明的次序;3 派生类的构造函数体中的内容;25、继承时的析构函数 析构函数也不被继承,派生类自行声明 声明方法与一般(无继承关系时)类的析构函数相同;不需要显式地调用基类的析构函数,系统会自动隐式调用;析构函数

20、的调用次序与构造函数相反;26、虚基类 用于有共同基类的场合 以 virtual 修饰说明基类 例: class B1:virtual public B 27、多态多态的分类:参数多态,包含多态,重载多态和强制多态 多态的实现:函数模板和类模板,虚函数,函数重载、运算符重载 虚函数 虚函数是动态绑定的基础,实现多态的重要手段;定义在基类中进行,在类的声明中,在函数原型之前写 virtual;只用来说明类声明中的原型,不能用在函数实现时;virtual 具有继承性,基类中声明白虚函数,派生类中无论是否说明,同原型函数都自动 为虚函数;在派生类中重新定义时,其函数原型都必需和基类中的原型完全相同;

21、调用方式:通过基类指针或引用,执行时会依据指针指向的对象的类,打算调用 哪个函数;不能是友元函数,不能是静态成员函数;不能是内联函数;不能是构造函数;可 以是析构函数;要求会分析具有虚函数的程序运行结果 纯虚函数 是在基类中说明的虚函数,它在该基类中没有定义,但要求在它的派生类中必需细心整理归纳 精选学习资料 定义自己的版本,或重新说明为纯虚函数: 第 6 页,共 7 页 virtual 函数类型函数名 参数表 =0; - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - -

22、- -声明为纯虚函数后在基类中就不再给出函数实现部分,函数体有派生类给出;带有纯虚函数的类称为抽象类 : 不能声明抽象类的对象,可以声明指向抽象类的指针或引用;假如派生类中没有实现纯虚函数,只是继承基类的纯虚函数,该派生类仍是一个抽象类运算符重载规章和限制可以重载 C+中除以下运算符外的全部运算符:. .* : .: 只能重载 C+语言中已有的运算符,不行臆造新的;不转变原运算符的优先级和结合性;不能转变操作数个数;经重载的运算符,其操作数中至少应当有一个是自定义类型;两种形式重载为类成员函数;重载为友元函数;运算符函数声明形式函数类型 operator 运算符(形参) . 重载为类成员函数时

23、:参数个数 =原操作数个数 -1 (后置 +、 - 除外)如类中重载二元运算符为成员运算符时,只能指定 1 个参数;重载为友元函数时:参数个数=原操作数个数,且至少应当有一个自定义类型的形参;如类中重载二元运算符为友元函数时,指定 2 个参数;例 : 将“+” 、“ - ” 运算重载为复数类的成员函数;例 : 将“+” 、“ - ” 运算重载为复数类的友元函数;规章 : 实部和虚部分别相加减;操作数 : 两个操作数都是复数类的对象;详细程序参考幻灯片或者作业 8 28、模板模板是实现代码重用机制的一种工具, 它可以实现类型参数化, 即把类型定义为参数, 从而实现了真正的代码重用;模板分为函数模板和类模板 板类;函数模板的一般说明形式如下 : , 它们分别答应用户构造模板函数和模 template 留意 class 小写返回类型 函数名 模板形参表 函数体 在函数模板中答应使用多个类型参数;template 类模板:template class 类名 类成员声明 ;假如需要在类模板以外定义其成员函数,就要采纳以下的形式:template 类型名类名 : 函数名(参数表) 第 7 页,共 7 页 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁