您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > [华工课件]C++程序设计基础(第三版)chap7-运算符重载
华南理工大学计算机学院周霭如2009chap7运算符重载7.1运算符重载规则7.2用成员或友元函数重载运算符7.3几个典型运算符重载7.4类类型转换小结华南理工大学计算机学院周霭如2009运算符重载使得用户自定义的数据以一种更简洁的方式工作例如intx,y;y=x+y;matrixm1,m2;//矩阵类对象m1=Madd(m1,m2);//调用函数计算两个矩阵的和complexc1,c2;//复数类对象c1=Cadd(c1,c2);//调用函数计算两个复数的和能表示为c1=c1+c2;?能表示为m1=m1+m2;?第7章运算符重载定义运算符重载函数华南理工大学计算机学院周霭如20097.1运算符重载规则7.1.1重载运算符的限制可以重载的运算符+-*/%^&|~!=+=-=*=/=%^=&=|=====!===&&||++---*‘-[]()newdeletenew[]delete[]不能重载的算符.::.*?:sizeof华南理工大学计算机学院周霭如20097.1运算符重载规则7.1.1重载运算符的限制重载运算符函数可以对运算符作出新的解释,但原有基本语义不变:不改变运算符的优先级不改变运算符的结合性不改变运算符所需要的操作数不能创建新的运算符华南理工大学计算机学院周霭如20097.1.2运算符重载的语法形式运算符函数是一种特殊的成员函数或友元函数成员函数的语法形式为:类型类名::operatorop(参数表){//相对于该类定义的操作}华南理工大学计算机学院周霭如2009运算符函数是一种特殊的成员函数或友元函数成员函数的语法形式为:类型类名::operatorop(参数表){//相对于该类定义的操作}7.1.2运算符重载的语法形式函数返回类型华南理工大学计算机学院周霭如2009运算符函数是一种特殊的成员函数或友元函数成员函数的语法形式为:类型类名::operatorop(参数表){//相对于该类定义的操作}7.1.2运算符重载的语法形式重载该运算符的类华南理工大学计算机学院周霭如20097.1.2运算符重载的语法形式运算符函数是一种特殊的成员函数或友元函数成员函数的语法形式为:类型类名::operatorop(参数表){//相对于该类定义的操作}被重载的运算符华南理工大学计算机学院周霭如20097.1.2运算符重载的语法形式关键字运算符函数是一种特殊的成员函数或友元函数成员函数的语法形式为:类型类名::operatorop(参数表){//相对于该类定义的操作}华南理工大学计算机学院周霭如20097.1.2运算符重载的语法形式函数名运算符函数是一种特殊的成员函数或友元函数成员函数的语法形式为:类型类名::operatorop(参数表){//相对于该类定义的操作}华南理工大学计算机学院周霭如2009运算符函数是一种特殊的成员函数或友元函数成员函数的语法形式为:类型类名::operatorop(参数表){//相对于该类定义的操作}7.1.2运算符重载的语法形式运算符要求的操作数华南理工大学计算机学院周霭如20097.1.2运算符重载的语法形式一个运算符被重载后,原有意义没有失去,只是定义了相对一特定类的一个新运算符运算符函数是一种特殊的成员函数或友元函数成员函数的语法形式为:类型类名::operatorop(参数表){//相对于该类定义的操作}华南理工大学计算机学院周霭如2009#includeiostream#includecstdlibusingnamespacestd;classCalculator{public:Calculator(){value=0;};voidoperator++();voidoperator--();unsignedintoperator()();private:unsignedintvalue;};intmain(){CalculatorCounter;inti;for(i=0;i5;i++){++Counter;cout\nCounter=Counter();}for(i=0;i=5;i++){--Counter;cout\nCounter=Counter();}}voidCalculator::operator++(){if(value65535)value++;else{cout\nDataoverflow!endl;exit(0);}}voidCalculator::operator--(){if(value0)value--;else{cout\nDataoverflow!endl;exit(0);}}unsignedintCalculator::operator()(){returnvalue;}例7-1设计一个安全计数器7.1.2运算符重载的语法形式华南理工大学计算机学院周霭如2009#includeiostream#includecstdlibusingnamespacestd;classCalculator{public:Calculator(){value=0;};voidoperator++();voidoperator--();unsignedintoperator()();private:unsignedintvalue;};intmain(){CalculatorCounter;inti;for(i=0;i5;i++){++Counter;cout\nCounter=Counter();}for(i=0;i=5;i++){--Counter;cout\nCounter=Counter();}}voidCalculator::operator++(){if(value65535)value++;else{cout\nDataoverflow!endl;exit(0);}}voidCalculator::operator--(){if(value0)value--;else{cout\nDataoverflow!endl;exit(0);}}unsignedintCalculator::operator()(){returnvalue;}重载了3个算符7.1.2运算符重载的语法形式例7-1设计一个安全计数器华南理工大学计算机学院周霭如2009#includeiostream#includecstdlibusingnamespacestd;classCalculator{public:Calculator(){value=0;};voidoperator++();voidoperator--();unsignedintoperator()();private:unsignedintvalue;};intmain(){CalculatorCounter;inti;for(i=0;i5;i++){++Counter;cout\nCounter=Counter();}for(i=0;i=5;i++){--Counter;cout\nCounter=Counter();}}voidCalculator::operator++(){if(value65535)value++;else{cout\nDataoverflow!endl;exit(0);}}voidCalculator::operator--(){if(value0)value--;else{cout\nDataoverflow!endl;exit(0);}}unsignedintCalculator::operator()(){returnvalue;}重载了3个算符7.1.2运算符重载的语法形式例7-1设计一个安全计数器华南理工大学计算机学院周霭如2009#includeiostream#includecstdlibusingnamespacestd;classCalculator{public:Calculator(){value=0;};voidoperator++();voidoperator--();unsignedintoperator()();private:unsignedintvalue;};intmain(){CalculatorCounter;inti;for(i=0;i5;i++){++Counter;cout\nCounter=Counter();}for(i=0;i=5;i++){--Counter;cout\nCounter=Counter();}}voidCalculator::operator++(){if(value65535)value++;else{cout\nDataoverflow!endl;exit(0);}}voidCalculator::operator--(){if(value0)value--;else{cout\nDataoverflow!endl;exit(0);}}unsignedintCalculator::operator()(){returnvalue;}voidCalculator::operator++(){if(value65535)value++;else{cout\nDataoverflow!endl;exit(0);}}7.1.2运算符重载的语法形式例7-1设计一个安全计数器华南理工大学计算机学院周霭如2009#includeiostream#includecstdlibusingnamespacestd;classCalculator{public:Calculator(){value=0;};voidoperator++();voidoperator--();unsignedintoperator()();private:unsignedintvalue;};intmain(){CalculatorCounter;inti;for(i=0;i5;i++){++Counter;cout\nCounter=Counter();}for(i=0;i=5;i++){--Counter;cout\nCounter=Counter();}}voidCalculator::operator++(){if(value65535)value++;else{cout\nDataoverflow!endl;exit(0);}}voidCalculator::operator--(){if(value0)value--;else{cout\nDataoverflow!endl;exit(0);}}unsignedintCalculator::operator()(){returnvalue;}voidCalculator::operator++(){if(value65535)value++;else{cout\nDataoverflow!endl;exit(0);}}使用系统预定义版本7.1.2运算符重载的语法形式例7-1设计一个安全计数器华南理工大学计算机学院周霭如2009#includeiostream#includecstdlibusingnamespacestd;classCalculator{public:Calculator(){value=0;};voidoperator++();voidoperator--();unsignedintoperator()();private:unsignedintvalue;};intmain(){CalculatorCounter;inti;for(i=0;i5;i++){++Counter;cout\nCounter=Counter();}for(i
本文标题:[华工课件]C++程序设计基础(第三版)chap7-运算符重载
链接地址:https://www.777doc.com/doc-3975491 .html