欢迎来到天天文库
浏览记录
ID:52077360
大小:162.50 KB
页数:35页
时间:2020-03-31
《《多态性与虚函数》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章多态性与虚函数本章内容多态性概述运算符重载虚函数及动态多态性1.多态性概述多态性是面向对象程序设计的一个重要特征。多态性:是指发出同样的消息被不同类型的对象接收时而导致不同的行为。多态是指类中具有相似功能的不同函数使用同一个名称。当调用这个相同名称的函数时,可根据需要完成不同的功能.从实现时机方面讲,多态性可以分为:静态多态性动态多态性静态多态性:指可在编译期间确定的多态性。静态多态性:函数重载运算符重载动态多态性:指在程序在运行过程中,才能确定的多态性。1.多态性静态多态性:1)函数重载:几个函数具有相同的名字,但函数参数的个数或类型不同。重载的函数可以是:一般函数类中的成
2、员函数、构造函数例题:构造函数重载:#includeclassclassA{public:classA(){a1=0;a2=0;cout<<”default”;}classA(inti,intj);voidprint(){cout<3、;ob2.print();}#include#includeclassstring{public:string(char*pa);voidprint(){cout<4、++”);}成员函数重载例题:运算符重载:将已有的运算符赋予新的含义。不可重载的运算符“•”圆点运算符“•*”成员指针选择运算符“∷”域分辨运算符“?:”条件运算符“sizeof”长度运算符除以上五个运算符外,其余运算符均可重载。2.运算符重载重载运算符的规则:只能重载C++中已有的可重载的运算符,不能建立新的运算符;重载运算符时不能改变原运算符操作数的个数、原有运算符的优先级和结合性,也不能改变原运算符对于内部基本类型对象的含义;如果重载了某个运算符(如“=”),并不意味着重载了相关的运算符(如“+=”、“-=”等);运算符重载:运算符重载函数的实现:可以利用:成员运算符函5、数友元运算符函数学习时注意:不同的实现方法,参数的个数不同。运算符重载:用类的成员函数的格式如下:class类名{......返回类型operator运算符(形参表);......};运算符重载:例:利用成员函数实现两个复数相加运算。程序说明:成员函数complexoperator+(constcomplex&a)用于定义“+”运算符重载复数类对象相加:c1+c2,相当于:c1.operator+(c2)用类的友元函数的格式如下。class类名{......friend返回类型operator运算符(形参表);......};运算符重载:由于友元函数被调用时没有隐含指向当前对象的this指6、针作实参,所以,一个一元运算符重载为类的友元函数时,其参数个数为1,一个二元运算符重载为类的成员函数时,其参数个数必须为2。运算符重载:例:利用友元函数实现两个复数相加运算。程序说明:友员函数friendcomplexoperator+(constcomplex&a,constcomplex&b)复数类对象相加:c1+c2,相当于:operator+(c1,c2)注意:用友元函数operator+()必须有两个参数。单目运算符重载例题:重载++、--、=,同时实现2个变量的加1、减1。#includeclasscount{inta,b;public:count(in7、ti,intj){a=i;b=j;}voidshow(){cout<
3、;ob2.print();}#include#includeclassstring{public:string(char*pa);voidprint(){cout<4、++”);}成员函数重载例题:运算符重载:将已有的运算符赋予新的含义。不可重载的运算符“•”圆点运算符“•*”成员指针选择运算符“∷”域分辨运算符“?:”条件运算符“sizeof”长度运算符除以上五个运算符外,其余运算符均可重载。2.运算符重载重载运算符的规则:只能重载C++中已有的可重载的运算符,不能建立新的运算符;重载运算符时不能改变原运算符操作数的个数、原有运算符的优先级和结合性,也不能改变原运算符对于内部基本类型对象的含义;如果重载了某个运算符(如“=”),并不意味着重载了相关的运算符(如“+=”、“-=”等);运算符重载:运算符重载函数的实现:可以利用:成员运算符函5、数友元运算符函数学习时注意:不同的实现方法,参数的个数不同。运算符重载:用类的成员函数的格式如下:class类名{......返回类型operator运算符(形参表);......};运算符重载:例:利用成员函数实现两个复数相加运算。程序说明:成员函数complexoperator+(constcomplex&a)用于定义“+”运算符重载复数类对象相加:c1+c2,相当于:c1.operator+(c2)用类的友元函数的格式如下。class类名{......friend返回类型operator运算符(形参表);......};运算符重载:由于友元函数被调用时没有隐含指向当前对象的this指6、针作实参,所以,一个一元运算符重载为类的友元函数时,其参数个数为1,一个二元运算符重载为类的成员函数时,其参数个数必须为2。运算符重载:例:利用友元函数实现两个复数相加运算。程序说明:友员函数friendcomplexoperator+(constcomplex&a,constcomplex&b)复数类对象相加:c1+c2,相当于:operator+(c1,c2)注意:用友元函数operator+()必须有两个参数。单目运算符重载例题:重载++、--、=,同时实现2个变量的加1、减1。#includeclasscount{inta,b;public:count(in7、ti,intj){a=i;b=j;}voidshow(){cout<
4、++”);}成员函数重载例题:运算符重载:将已有的运算符赋予新的含义。不可重载的运算符“•”圆点运算符“•*”成员指针选择运算符“∷”域分辨运算符“?:”条件运算符“sizeof”长度运算符除以上五个运算符外,其余运算符均可重载。2.运算符重载重载运算符的规则:只能重载C++中已有的可重载的运算符,不能建立新的运算符;重载运算符时不能改变原运算符操作数的个数、原有运算符的优先级和结合性,也不能改变原运算符对于内部基本类型对象的含义;如果重载了某个运算符(如“=”),并不意味着重载了相关的运算符(如“+=”、“-=”等);运算符重载:运算符重载函数的实现:可以利用:成员运算符函
5、数友元运算符函数学习时注意:不同的实现方法,参数的个数不同。运算符重载:用类的成员函数的格式如下:class类名{......返回类型operator运算符(形参表);......};运算符重载:例:利用成员函数实现两个复数相加运算。程序说明:成员函数complexoperator+(constcomplex&a)用于定义“+”运算符重载复数类对象相加:c1+c2,相当于:c1.operator+(c2)用类的友元函数的格式如下。class类名{......friend返回类型operator运算符(形参表);......};运算符重载:由于友元函数被调用时没有隐含指向当前对象的this指
6、针作实参,所以,一个一元运算符重载为类的友元函数时,其参数个数为1,一个二元运算符重载为类的成员函数时,其参数个数必须为2。运算符重载:例:利用友元函数实现两个复数相加运算。程序说明:友员函数friendcomplexoperator+(constcomplex&a,constcomplex&b)复数类对象相加:c1+c2,相当于:operator+(c1,c2)注意:用友元函数operator+()必须有两个参数。单目运算符重载例题:重载++、--、=,同时实现2个变量的加1、减1。#includeclasscount{inta,b;public:count(in
7、ti,intj){a=i;b=j;}voidshow(){cout<
此文档下载收益归作者所有