欢迎来到天天文库
浏览记录
ID:40708347
大小:710.02 KB
页数:95页
时间:2019-08-06
《第11章运算符重载》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第11章运算符重载什么是运算符重载运算符重载的方法几个特殊的运算符的重载自定义类型转换运算符运算符重载实例//Rational类的使用voidmain(){Rationalr1(1,3),r2(19,21),r3;//执行r3=r1+r2r3.add(r1,r2);//显示r1+r2=r3r1.display();cout<<"+";r2.display();cout<<"=";r3.display();cout<2、rray(20,30);intvalue,i;for(i=20;i<=30;++i){cout<<"请输入第"<>value;array.insert(i,value);}//为数组元素赋值array[i]while(true){cout<<"输入要查找的元素序号(0:结束):";cin>>i;if(i==0)break;if(array.fatch(i,value))//取数组元素的值array[i]cout<3、算符重载使系统内置的运算符可以用于自定义类型例如:+运算符能够实现2个对象间的加。例如:类A的对象a1、a2、a3,希望:a3=a1+a2;即:分别把对象a1和a2的各个数据成员值对应相加,然后赋给对象a3。运算符重载的限制重载不能改变运算符的优先级和结合性重载不能改变运算符的操作数个数不能创建新的运算符不是所有的运算符都能重载可以重载的运算符+ - * /% ^ & 4、 ~ !=< > += -= *= /= %5、= ^= &= 6、= << >> >>= <<===!= <= >= && 7、8、++--->*,->[]() new delete new[] delete[]不能重载的运算符. .*?:::sizeof第11章运算符重载什么是运算符重载运算符重载的方法几个特殊的运算符的重载自定义类型转换运算符运算符重载实例//Rational类的使用voidmain(){Rationalr1(1,3),r2(19,219、),r3;//执行r3=r1+r2r3=r1+r2;//显示r1+r2=r3cout<10、函数原型运算符的重载不能改变运算符的运算对象数。因此,重载函数的形式参数个数(包括成员函数的隐式指针this)与运算符的运算对象数相同运算符重载可以重载成成员函数也可以重载成全局函数实现。重载成全局函数时,最好把此函数设为友员函数(封装性)。如果作为类的成员函数,它的形式参数个数比运算符的运算对象数少1。这是因为成员函数有一个隐含的参数this。在C++中,把隐含参数this作为运算符的第一个参数。当把一个一元运算符重载成成员函数时,该函数没有形式参数。把一个二元运算符重载成成员函数时,该函数只有一个形式参数,就是右操作数,当前对象是左操作数。运算符重载通常要对类的私有数据成11、员作操作。如果用普通函数重载,则需要通过公有的方法访问私有的数据成员,运算速度较慢,或将所有的数据成员都设为公有,直接访问这些数据成员,这样将违反类的封装。重载实例为rational类增加“+”和“*”以及比较的重载函数,用以替换现有的add和multi函数方案一:重载成成员函数classRational{private:intnum,den;voidReductFraction();public:Rational(intn=0,intd=1){num=n;den=d;}Rationaloperator
2、rray(20,30);intvalue,i;for(i=20;i<=30;++i){cout<<"请输入第"<>value;array.insert(i,value);}//为数组元素赋值array[i]while(true){cout<<"输入要查找的元素序号(0:结束):";cin>>i;if(i==0)break;if(array.fatch(i,value))//取数组元素的值array[i]cout<3、算符重载使系统内置的运算符可以用于自定义类型例如:+运算符能够实现2个对象间的加。例如:类A的对象a1、a2、a3,希望:a3=a1+a2;即:分别把对象a1和a2的各个数据成员值对应相加,然后赋给对象a3。运算符重载的限制重载不能改变运算符的优先级和结合性重载不能改变运算符的操作数个数不能创建新的运算符不是所有的运算符都能重载可以重载的运算符+ - * /% ^ & 4、 ~ !=< > += -= *= /= %5、= ^= &= 6、= << >> >>= <<===!= <= >= && 7、8、++--->*,->[]() new delete new[] delete[]不能重载的运算符. .*?:::sizeof第11章运算符重载什么是运算符重载运算符重载的方法几个特殊的运算符的重载自定义类型转换运算符运算符重载实例//Rational类的使用voidmain(){Rationalr1(1,3),r2(19,219、),r3;//执行r3=r1+r2r3=r1+r2;//显示r1+r2=r3cout<10、函数原型运算符的重载不能改变运算符的运算对象数。因此,重载函数的形式参数个数(包括成员函数的隐式指针this)与运算符的运算对象数相同运算符重载可以重载成成员函数也可以重载成全局函数实现。重载成全局函数时,最好把此函数设为友员函数(封装性)。如果作为类的成员函数,它的形式参数个数比运算符的运算对象数少1。这是因为成员函数有一个隐含的参数this。在C++中,把隐含参数this作为运算符的第一个参数。当把一个一元运算符重载成成员函数时,该函数没有形式参数。把一个二元运算符重载成成员函数时,该函数只有一个形式参数,就是右操作数,当前对象是左操作数。运算符重载通常要对类的私有数据成11、员作操作。如果用普通函数重载,则需要通过公有的方法访问私有的数据成员,运算速度较慢,或将所有的数据成员都设为公有,直接访问这些数据成员,这样将违反类的封装。重载实例为rational类增加“+”和“*”以及比较的重载函数,用以替换现有的add和multi函数方案一:重载成成员函数classRational{private:intnum,den;voidReductFraction();public:Rational(intn=0,intd=1){num=n;den=d;}Rationaloperator
3、算符重载使系统内置的运算符可以用于自定义类型例如:+运算符能够实现2个对象间的加。例如:类A的对象a1、a2、a3,希望:a3=a1+a2;即:分别把对象a1和a2的各个数据成员值对应相加,然后赋给对象a3。运算符重载的限制重载不能改变运算符的优先级和结合性重载不能改变运算符的操作数个数不能创建新的运算符不是所有的运算符都能重载可以重载的运算符+ - * /% ^ &
4、 ~ !=< > += -= *= /= %
5、= ^= &=
6、= << >> >>= <<===!= <= >= &&
7、
8、++--->*,->[]() new delete new[] delete[]不能重载的运算符. .*?:::sizeof第11章运算符重载什么是运算符重载运算符重载的方法几个特殊的运算符的重载自定义类型转换运算符运算符重载实例//Rational类的使用voidmain(){Rationalr1(1,3),r2(19,21
9、),r3;//执行r3=r1+r2r3=r1+r2;//显示r1+r2=r3cout<10、函数原型运算符的重载不能改变运算符的运算对象数。因此,重载函数的形式参数个数(包括成员函数的隐式指针this)与运算符的运算对象数相同运算符重载可以重载成成员函数也可以重载成全局函数实现。重载成全局函数时,最好把此函数设为友员函数(封装性)。如果作为类的成员函数,它的形式参数个数比运算符的运算对象数少1。这是因为成员函数有一个隐含的参数this。在C++中,把隐含参数this作为运算符的第一个参数。当把一个一元运算符重载成成员函数时,该函数没有形式参数。把一个二元运算符重载成成员函数时,该函数只有一个形式参数,就是右操作数,当前对象是左操作数。运算符重载通常要对类的私有数据成11、员作操作。如果用普通函数重载,则需要通过公有的方法访问私有的数据成员,运算速度较慢,或将所有的数据成员都设为公有,直接访问这些数据成员,这样将违反类的封装。重载实例为rational类增加“+”和“*”以及比较的重载函数,用以替换现有的add和multi函数方案一:重载成成员函数classRational{private:intnum,den;voidReductFraction();public:Rational(intn=0,intd=1){num=n;den=d;}Rationaloperator
10、函数原型运算符的重载不能改变运算符的运算对象数。因此,重载函数的形式参数个数(包括成员函数的隐式指针this)与运算符的运算对象数相同运算符重载可以重载成成员函数也可以重载成全局函数实现。重载成全局函数时,最好把此函数设为友员函数(封装性)。如果作为类的成员函数,它的形式参数个数比运算符的运算对象数少1。这是因为成员函数有一个隐含的参数this。在C++中,把隐含参数this作为运算符的第一个参数。当把一个一元运算符重载成成员函数时,该函数没有形式参数。把一个二元运算符重载成成员函数时,该函数只有一个形式参数,就是右操作数,当前对象是左操作数。运算符重载通常要对类的私有数据成
11、员作操作。如果用普通函数重载,则需要通过公有的方法访问私有的数据成员,运算速度较慢,或将所有的数据成员都设为公有,直接访问这些数据成员,这样将违反类的封装。重载实例为rational类增加“+”和“*”以及比较的重载函数,用以替换现有的add和multi函数方案一:重载成成员函数classRational{private:intnum,den;voidReductFraction();public:Rational(intn=0,intd=1){num=n;den=d;}Rationaloperator
此文档下载收益归作者所有