欢迎来到天天文库
浏览记录
ID:48177255
大小:922.00 KB
页数:21页
时间:2020-01-17
《黄建的PPT教学课件,C++_07_运算符重载.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、运算符重载运算符重载运算符重载重载"long"重载"="重载方式重载"-"重载"+"重载"++"重载"<<"本章内容C++把重载的运算符视作特殊的函数,因此运算符重载就是一种特殊的函数重载。重载方式运算符重载运算符所构成的表达式的类型应说明为函数的返回类型。运算符重载运算符重载是针对C++原有运算符进行的,不能通过运算符重载创造出新的运算符。重载的运算符称为运算符函数,函数名就是operator<操作符>,例如:operator+。与运算符相关的操作数(一个或两个)需作为形参加以说明。运算符重载规则不能定义新的运算符,如:"@"、"**"。以下运算符
2、不能重载:"::"、"."、"?:"和sizeof。优先级、操作数个数和结合方向不变。专门处理对象。在运算符定义的参数表中,至少有一个参数必须是类对象。"="、"[]"、"()"、"->"和类型转换运算符只能作为成员函数重载。调用运算符函数用非成员函数重载运算符时,操作数作函数形参。若重载了二元运算符"+",则a+b和operator+(a,b)等价;若重载了一元运算符"-",则-a和operator-(a)等价。用成员函数重载运算符时,第一操作数是参数表中隐含的this指针所指向的对象,所以并不显式地出现在参数表中。若重载了二元运算符"+",则a+
3、b和a.operator+(b)等价;若重载了一元运算符"-",则-a和a.operator-()等价。classA{intx;public:A(intn=0):x(n){}Aoperator+(At){Aa;a.x=x+t.x;returna;}};重载"+"重载加法运算符"+"a3=a1+a2;a3=a1.operator+(a2);classA{intx;public:A(intn=0):x(n){}friendAoperator+(Aa1,Aa2){Aa;a.x=a1.x+a2.x;returna;}};重载加法运算符"+"a3=a1+a2;
4、a3=operator+(a1,a2);classA{intx;public:A(intn=0):x(n){}Aoperator-(){returnA(-x);}};重载"-"重载取负运算符"-"a2=-a1;a2=a1.operator-();classA{intx;public:A(intn=0):x(n){}friendAoperator-(Aa){returnA(-a.x);}};重载取负运算符"-"a2=-a1;a2=operator-(a1);classA{intx;public:A(intn=0):x(n){}Aoperator++()
5、{x++;return*this;}};重载"++"重载前缀自增运算符"++"++a1;a1.operator++();classA{intx;public:A(intn=0):x(n){}friendAoperator++(A&t){t.x++;returnt;}};重载前缀自增运算符"++"++a1;operator++(a1);classA{intx;public:A(intn=0):x(n){}Aoperator++(int){x++;returnA(x-1);}};重载后缀自增运算符"++"a1++;a1.operator++(1);cla
6、ssA{intx;public:A(intn=0):x(n){}friendAoperator++(A&t,int){t.x++;returnA(t.x-1);}};重载后缀自增运算符"++"a1++;operator++(a1,1);重载类型转换符"long"类型转换符必须作为成员函数重载。重载"long"重载类型转换符,不需要声明返回值类型。classA{intx;public:A(intn=0):x(n){}operatorlong(){return(long)x;}};重载类型转换符"long"long(a1);a1.operatorlong
7、();赋值运算符"="只能作为成员函数重载,并且不能被继承。重载赋值运算符"="重载"="重载赋值运算符系统为每个类都生成了一个缺省的赋值运算符。默认的赋值操作就是同类对象间对应成员的逐一赋值(浅层复制)。如果类中包含指向动态空间的指针,一般需要重载赋值运算符和复制构造函数,以实现深层复制。返回值应声明为引用,而函数体总是用语句return*this;返回。输入和输出运算符">>"和"<<"只能作为非成员函数重载。函数原型为:istream&operator>>(istream&,类名&);ostream&operator<<(ostream&,类名
8、&);重载C++流运算符"<<"重载"<<"classA{intx;public:A(intn=0):x(n
此文档下载收益归作者所有