C类与继承知识点_第1页
C类与继承知识点_第2页
C类与继承知识点_第3页
C类与继承知识点_第4页
C类与继承知识点_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

总结类与继承知识点第三章类和对象1.类①类定义的关键字是class;②类的访问限定符包括public、private和protected;③类成员默认的访问方式是private;④访问限定符在类中无先后次序,各限定符允许多次出现;⑤类的数据成员通常指定为私有成员;函数成员通常指定为公有成员;⑥指定为公有的类成员可以在类对象所在域中的任何位置以“对象名.成员变量”形式访问;⑦类的私有和保护只能被该类的成员函数或友元函数访问。2.函数原型三要素:函数返回类型;函数名;形参列表(至少要有形参类型)eg;intf(int,int,int)3.拷贝构造函数(复制构造函数)的三种调用情况:当类的一个对象去初始化该类的另一个对象时;如果函数的形参是类的对象,调用函数进行形参和实参结合时,形参建立;如果函数的返回类型是类类型,函数调用完成返回时,return语句返回的对象值会初始化访问该函数的匿名对象;4.析构函数的调用情况当类对象过期时,程序将自动调用析构函数,不用再代码中显示调用5.对象不能调用构造函数,因为构造函数是用来创建对象的,之前不存在对象6.默认构造函数的两种形式:参数都有默认值;无参数7.当默认构造函数无参数时,私有成员将会是随机值;8.构造函数的参数名不能与类成员相同,参数表示的不是类成员,而是赋给类成员的值9.构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。10.当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作;11.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。12.构造函数的任务是建立对象,类中可以有多个构造函数,它们由参数区分。如果类说明中没有给出构造函数,则C++编译器会提供构造函数,该函数不完成对象初始化工作。13.复制构造函数的参数是对象的复制,当程序没有给出复制构造函数时,编译系统会提供默认复制构造函数,完成类对象的复制。复制构造函数被调用情况有3种。14.析构函数在对象释放时被自动调用。类中没有定义析构函数时,编译系统会提供一个默认的析构函数。该函数不完成具体对象的清理工作。15.对象初始化发生的三个地方:定义对象时;函数调用时的值传送,即形参被建立,存在初始化函数的返回类型为类类型时,return语句返回的对象值将被用于初始化调用该函数的匿名对象16.对象成员一定要通过初始化表来初始化;初始化的顺序是按在类中声明的顺序进行,与初始化表中出现的顺序无关17.析构函数的调用顺序与构造函数的调用顺序相反18.静态成员:staticinti;staticintf(inti)静态数据成员为所在类的所有对象共享,可以修改;静态数据成员一定是在类中声明,类外初始化;静态成员函数只能访问该类的静态数据成员或静态成员函数;④静态成员函数没有this指针;⑤以类名+作用域运算符的形式访问静态成员函数;19.常量成员:constint&m;(常引用)constintj;(常变量)constCPointp;(常对象)voidbuy()const;(常量成员函数)常量数据成员的初始化必须在初始化表中完成,不可修改常量成员函数中,不能有修改类中数据成员的语句(可以访问),也不能访问类中的非常量成员函数20.友元三种形式:外部函数可以访问A类数据成员A类中的一个成员函数可以访问B类数据成员A类中所有的成员函数都可以访问B类数据成员21.友元函数是非成员函数,在类体内说明了,在类体外定义,定义和调用等同于一般的普通函数;有和成员函数相同的访问权限;由于它可以直接访问类的私有成员,因此破坏了类的封装性和隐藏性,尽量少用;22.this指针是一个隐含在成员函数中的特殊指针,用于指向正在被成员函数操作的对象非静态成员函数指针在主程序中的定义形式:double(CPoint::*pFun)()=CPoint::getx;修改函数指针的指向:pFun=CPoint::gety;调用函数指针的形式:cout<<(p1.*pFun)()<<endl;或cout<<(p1->*pFun)()<<endl;静态成员函数指针在主程序中的定义形式:int(*pFun)()=CPoint::ObjectNum;调用函数指针的形式:cout<<(*pFun)()<<endl;或cout<<pFun()<<endl;23.函数的重载,函数名相同,参数类型不相同或者参数个数不相同;24.深拷贝使得不同的对象拥有不同的资源;第五章继承派生类中继承的基类成员的访问权限到派生类受继承方式影响;继承的三种方式:公有继承,私有继承,保护继承;默认继承方式为private;①共同点:基类的private成员成为派生类的隐藏的私有成员,称为不能直接访问成员;②区别:私有继承,基类的public、protected成员在派生类中作为private成员;公有继承,基类的public、protected成员在派生类中访问属性不变;保护继承,基类的public、protected成员在派生类中作为protected成员;派生类可以只从一个基类中派生,也可以从多个基类中派生;单继承:从一个基类中派生的继承方式;多继承:从多个基类中派生的继承方式;一个派生类可以作为另一个派生类的基类。无论是单继承还是多继承,派生类至少有一个基类;派生类的成员除了它自己的成员外,还包含了它的基类成员;基类的构造函数、析构函数和友元函数是不能被派生类继承的;派生类的构造函数的2项工作:①完成基类数据成员的初始化;②完成基类中新增数据成员化;派生类构造函数的执行顺序:(1)执行所有基类的构造函数(顺序按定义派生类时指定的各基类顺序);(2)执行对象成员所在类的构造函数(顺序按照他们在类中的声明顺序);(3)最后执行派生类构造函数体中的内容;9.派生类对象初始化规则:(1)从基类继承下来的数据成员的初始化由基类的构造函数完成(2)对象成员的初始化由其所属类的构造函数完成(3)派生类新添加的数据成员的初始化由派生类的构造函数完成(4)派生类的构造函数必须使用初始化表10.派生类对象的数据成员的初始化顺序:(1)初始化从基类继承的对象成员(2)初始化从基类继承的其他数据成员(3)初始化派生类的对象成员(4)初始化派生类的其他数据成员11.水平访问:主函数中类实例访问基类或派生类的公有成员;垂直访问:派生类中成员函数对基类成员的访问;12.成员函数的同名覆盖:当派生类成员函数原型和基类的某个成员函数相同时,若使用派生类对象调用函数,派生类成员函数将覆盖基类的同名函数;13.赋值兼容规则:指在需要基类对象的任何地方都可以使用公有派生类的对象来替代;(前提:采用公有继承)替代包括以下情况:(1)派生类对象可以赋值给基类对象(2)派生类对象可以初始化基类的引用(3)派生类对象的地址可以赋给指向基类的指针14.虚基类:①概念:在多重继承(多继承)中,如果多条继承路径上有一个公共的基类,则在这些路径的汇合点上的派生类会产生来自不同路径的公共基类的多个拷贝,如果用virtual把公共基类定义成虚基类,则只会保留公共基类的一个拷贝;这种派生类对基类只产生一个拷贝的继承方式叫做共享继承;②作用:引进虚基类的目的是为了解决二义性问题,使得公共基类在它的派生类对象中只产生一个基类子对象;15.多继承派生类构造函数构造对象时,构造函数的调顺序是:①虚基类的构造函数;

温馨提示

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

评论

0/150

提交评论