文档详情

嵌入式下程序设计多态运算符重载虚函数抽象类.ppt

发布:2025-03-08约7.05千字共10页下载文档
文本预览下载声明

嵌入式Linux下QT程序设计主讲:成宝宗本章主要内容多态性运算符重载虚函数纯虚函数抽象类多态性的概念*虚函数:用于动态绑定,根据参数类型不同,自动调用对应函数。多态性是面向对象程序设计的重要特征之一。多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。多态的实现:函数重载:相同函数名,不同函数参数。运算符重载:对原有运算符增加其他功能。030405060102运算符重载*运算符重载是对已有的运算符赋予多重含义必要性C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类)实现机制将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参。编译系统对重载运算符的选择,遵循函数重载的选择原则。规则和限制*经重载的运算符,其操作数中至少应该有一个是自定义类型。不能改变操作数个数。不改变原运算符的优先级和结合性。只能重载C++语言中已有的运算符,不可臆造新的。..*::?:可以重载C++中除下列运算符外的所有运算符:两种形式*01重载为类的非静态成员函数02重载为非成员函数运算符函数*声明形式函数类型operator运算符(形参){......}重载为类成员函数时

参数个数=原操作数个数-1 (后置++、--除外)重载为非成员函数时参数个数=原操作数个数,且至少应该有一个自定义类型的形参。运算符成员函数的设计*双目运算符B01如果要重载B为类成员函数,使之能够实现表达式oprd1Boprd2,其中oprd1为A类对象,则B应被重载为A类的成员函数,形参类型应该是oprd2所属的类型。01经重载后,表达式oprd1Boprd2相当于oprd1.operatorB(oprd2)01将“+”、“-”运算重载为复数类的成员函数。运算符重载*1规则:3操作数:2实部和虚部分别相加减。4两个操作数都是复数类的对象。#includeiostreamusingnamespacestd;classComplex{ //复数类定义public: //外部接口 Complex(doubler=0.0,doublei=0.0):real(r),imag(i){} //构造函数 Complexoperator+(constComplexc2)const; //运算符+重载成员函数 Complexoperator-(constComplexc2)const; //运算符-重载成员函数 voiddisplay()const; //输出复数private: //私有数据成员 doublereal; //复数实部 doubleimag; //复数虚部};ComplexComplex::operator+(constComplexc2)const{ //重载运算符函数实现 returnComplex(real+c2.real,imag+c2.imag);//创建一个临时无名对象作为返回值}ComplexComplex::operator-(constComplexc2)const{ //重载运算符函数实现 returnComplex(real-c2.real,imag-c2.imag);//创建一个临时无名对象作为返回值}voidComplex::display()const{ cout(real,imag)endl;}intmain(){ //主函数 Complexc1(5,4),c2(2,10),c3; //定义复数类的对象 coutc1=;c1.display(); coutc2=;c2.display(); c3=c1-c2; //使用重载运算符完成复数减法 coutc3=c1-c2=;c3.display(); c3=c1+c2; //使用重载运算符完成复数加法 coutc3=c1+c2=;c3.display(); return0;}程序输出的结果为:*c1=(5,4)c2=(2,10)c3=c1-c2=(3,-6)c3=c1+c2=(7,14)#includeiostreamusingnamespacestd;clas

显示全部
相似文档