下载此文档

c++课件运算符重载和类重载.ppt


文档分类:IT计算机 | 页数:约51页 举报非法文档有奖
1/51
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/51 下载此文档
文档列表 文档介绍
第12章运算符重载和类型重载主要内容: 运算符重载规则 类型重载在C++ 中有这样的情况,同一个类型或运算符在不同的类中代表不同的意思或者实施不同的运算,这就是面向对象的三大特点之一的多态。函数重载是 C++ 语言中多态的一种表现形式,运算符重载和类型重载是多态的另外两种表现形式。运算符重载是对已有的运算符赋予多重含义。 C++ 中预定义的运算符的操作对象只能是基本数据类型, 对于很多用户自定义类型,也需要有类似的运算操作,这就提出了对运算符进行重新定义,赋予已有符号以新功能的要求。同一个运算符作用于不同类型的数据导致不同的行为。 运算符重载概述运算符重载只能对系统提供的已有运算定义新的运算含义,不能创造全新的运算符,同时还不能改变运算符原有的语法结构、操作数个数、优先级和结合性,不能有二义性。不是所有的运算符都能重载,不能重载的运算符有:作用域运算符( ::)、条件运算符( ?:)、直接成员访问运算符( .)、 sizeof 运算符、解除对指向类成员的指针的引用运算符( .*)。运算符重载的关键字是 operator 。针对一个具体类的已有运算符重载有两种途径: 1 )将运算符重新定义为类的成员函数; 2 )将运算符重新定义为类的友元函数。一、运算符重载方法定义一个重载运算符就像定义一个函数,只是该函数的名字是 operator@ ,这里@代表运算符。函数参数表中参数的个数取决于两个因素: 1) 运算符是一元的(一个参数)还是二元的(两个参数)。 2) 运算符被定义为友元函数(对于一元是一个参数, 对于二元是两个参数)还是成员函数(对于一元没有参数, 对于二元是一个参数—对象变为左侧参数)。 operator 定义一个成员函数,函数名就是重载的运算符。运算符如果重载为类的成员函数,它就可以自由地访问该类的数据成员。运算符重载为类的成员函数的一般格式为: < 类型> < 类名>:: operator < 要重载的运算符>(形参表) { 函数体 } 其中,类型为运算符重载函数的返回类型。类名为成员函数所属类的类名, <operator>< 重载运算符>即为重载函数名。形参为参加运算的对象或数据。【例题 】复数的加减运算符重载#include < iostream > using namespace std; plex { private: float real,image ; public: Complex(float r=0,float i=0); Complex Add(const Complex &c); // 定义一个 Add plex operator+(const Complex &c); // 重载+plex operator-(plex &c); // 重载-plex& operator+=(plex &c); // 重载+= 运算符,复合赋值操作符必须返回左操作数的引用,必须定义为成员函数 Complex& operator=(plex &other); // 重载=运算符,赋值运算符必须返回对* this 的引用, void Show(int i); }; Complex::Complex(float r,float i) { real=r; image=i; } void Complex::Show(int i) { // 一般情况下,这里不应该有参数 i,本例的目的是为了区分不同的复数,便于观看结果 cout <<" 复数: c"<<i<<"="<<real; if(image >0) cout <<"+"<<image<<"i"<< endl ; if(image <0) cout <<image<<"i"<< endl ;} Complex Complex::Add(const Complex &c) { Complex t; =this-> real+ ; =this-> image+ ; return t; } Complex Complex::operator+(const Complex &c) { Complex t; =this-> real+ ; =this-> image+ ; return t; } Complex Com

c++课件运算符重载和类重载 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数51
  • 收藏数0 收藏
  • 顶次数0
  • 上传人875845154
  • 文件大小0 KB
  • 时间2016-04-28