欢迎来到天天文库
浏览记录
ID:5425028
大小:1.06 MB
页数:34页
时间:2017-11-12
《嵌入式linux下c++程序设计--07多态,运算符重载,虚函数,抽象类》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式Linux下QT程序设计主讲:成宝宗本章主要内容多态性运算符重载虚函数纯虚函数抽象类3多态性的概念多态性是面向对象程序设计的重要特征之一。多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。多态的实现:函数重载:相同函数名,不同函数参数。运算符重载:对原有运算符增加其他功能。虚函数:用于动态绑定,根据参数类型不同,自动调用对应函数。4运算符重载运算符重载是对已有的运算符赋予多重含义必要性C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类)实现机制将指定的运算表达式转化
2、为对运算符函数的调用,运算对象转化为运算符函数的实参。编译系统对重载运算符的选择,遵循函数重载的选择原则。5规则和限制可以重载C++中除下列运算符外的所有运算符:..*::?:只能重载C++语言中已有的运算符,不可臆造新的。不改变原运算符的优先级和结合性。不能改变操作数个数。经重载的运算符,其操作数中至少应该有一个是自定义类型。6两种形式重载为类的非静态成员函数重载为非成员函数7运算符函数声明形式函数类型operator运算符(形参){......}重载为类成员函数时参数个数=原操作数个数-1(后置++、--除外)重载为非成
3、员函数时参数个数=原操作数个数,且至少应该有一个自定义类型的形参。8运算符成员函数的设计双目运算符B如果要重载B为类成员函数,使之能够实现表达式oprd1Boprd2,其中oprd1为A类对象,则B应被重载为A类的成员函数,形参类型应该是oprd2所属的类型。经重载后,表达式oprd1Boprd2相当于oprd1.operatorB(oprd2)9运算符重载将“+”、“-”运算重载为复数类的成员函数。规则:实部和虚部分别相加减。操作数:两个操作数都是复数类的对象。#includeusingnamespac
4、estd;classComplex{//复数类定义public://外部接口Complex(doubler=0.0,doublei=0.0):real(r),imag(i){}//构造函数Complexoperator+(constComplex&c2)const;//运算符+重载成员函数Complexoperator-(constComplex&c2)const;//运算符-重载成员函数voiddisplay()const;//输出复数private://私有数据成员doublereal;//复数实部doubleimag;
5、//复数虚部};ComplexComplex::operator+(constComplex&c2)const{//重载运算符函数实现returnComplex(real+c2.real,imag+c2.imag);//创建一个临时无名对象作为返回值}ComplexComplex::operator-(constComplex&c2)const{//重载运算符函数实现returnComplex(real-c2.real,imag-c2.imag);//创建一个临时无名对象作为返回值}voidComplex::display(
6、)const{cout<<"("<7、;}程序输出的结果为:c1=(5,4)c2=(2,10)c3=c1-c2=(3,-6)c3=c1+c2=(7,14)11#includeusingnamespacestd;classPoint{private:intx;inty;public:Point(inta=0,intb=0):x(a),y(b){}friendPointoperator+(Point&p,Point&q);//友元函数Pointoperator-(Point&p);//成员函数voidshow(){cout<<"(x="<8、",y="<
7、;}程序输出的结果为:c1=(5,4)c2=(2,10)c3=c1-c2=(3,-6)c3=c1+c2=(7,14)11#includeusingnamespacestd;classPoint{private:intx;inty;public:Point(inta=0,intb=0):x(a),y(b){}friendPointoperator+(Point&p,Point&q);//友元函数Pointoperator-(Point&p);//成员函数voidshow(){cout<<"(x="<8、",y="<
8、",y="<
此文档下载收益归作者所有