- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
***********************complexoperator+(complexc1,complexc2) //运算符重载友元函数实现{ return
complex(c2.real+c1.real,c2.imag+c1.imag);}complexoperator-(complexc1,complexc2) //运算符重载友元函数实现{ return
complex(c1.real-c2.real,c1.imag-c2.imag);}//其他函数和主函数同例8-1*静态绑定与动态绑定绑定程序自身彼此关联的过程,确定程序中的操作调用与执行该操作的代码间的关系。静态绑定绑定过程出现在编译阶段,用对象名或者类名来限定要调用的函数。动态绑定绑定过程工作在程序运行时执行,在程序运行时才确定将要调用的函数。虚函数虚函数是动态绑定的基础。是非静态的成员函数。在类的声明中,在函数原型之前写virtual。virtual只用来说明类声明中的原型,不能用在函数实现时。具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。本质:不是重载声明而是覆盖。调用方式:通过基类指针或引用,执行时会
根据指针指向的对象的类,决定调用哪个函数。虚函数例8-4#includeiostreamusingnamespacestd;classB0 //基类B0声明{public: //外部接口 virtualvoiddisplay()//虚成员函数{coutB0::display()endl;}};classB1:publicB0 //公有派生{public:voiddisplay(){coutB1::display()endl;}};classD1:publicB1 //公有派生{public: voiddisplay(){coutD1::display()endl;}};虚函数派生类没有显式给出虚函数声明,怎样判断派生类中的成员函数是不是一个虚函数???voidfun(B0*ptr) //普通函数{ptr-display();}intmain() //主函数{ B0b0,*p; //声明基类对象和指针 B1b1; //声明派生类对象 D1d1; //声明派生类对象 p=b0; fun(p); //调用基类B0函数成员 p=b1; fun(p); //调用派生类B1函数成员 p=d1; fun(p); //调用派生类D1函数成员}运行结果:B0::display()B1::display()D1::display()*虚析构函数何时需要虚析构函数?当你可能通过基类指针删除派生类对象时如果你打算允许其他人通过基类指针调用对象的析构函数(通过delete这样做是正常的),并且被析构的对象是有重要的析构函数的派生类的对象,就需要让基类的析构函数成为虚拟的。虚函数抽象类带有纯虚函数的类称为抽象类:class类名{virtual类型函数名(参数表)=0;//纯虚函数...}纯虚函数与抽象类虚函数:1为什么要引入虚函数虚函数的定义1在引入派生后,用来表现基类和派生类的成员函数之间的一种关系的2虚函数的定义是在基类中进行的,它是在基类中需要定义为虚函数的成员函数的申明中冠以关键字virtual3在派生中重新定义中,其函数原型,包括返回类型、函数名、参数个数、参数类型的顺序,都必须与基类中的原型完全相同。虚函数与重载函数的关系?是函数重载的一种特殊形式,但不同于一般的函数重载。一般的函数重载,函数的返回类型及所带的参数可以不同,仅是函数名相同。当重载一个虚函数时,要求函数名、返回类型、参数个数、参数类型和顺序都与基类中原型相同,不能有任何不相同。抽象类纯虚函数与抽象类作用抽象类为抽象和设计的目的而声明,将有关的数据和行为组织在一个继承层次结构中,保证派生类具有要求的行为。对于暂时无法实现的函数,可以声明为纯虚函数,留给派生类去实现。使用规定:1抽象类只能作为基类来使用。不能声明抽象类的对象。2构造函数不能是虚函数,析构函数可以是虚函数。3抽象类不能用作参数类型、函数返回类型或是显式转换类型
文档评论(0)