一、加+,减-,乘*,除/ 的运算符重载
Rational operator*(const Rational &x) const{
return Rational(x.a * this->a);
}
在这里只写乘法的,加减除的写法类似
二、<<输出,>>输入的运算符重载
friend ostream& operator<<(ostream &out, Rational x){
out <<x.a;
return out;
}
friend istream& operator>>(istream &in, Rational &x){
in >> x.a;
return in;
}
三、单目运算符 ++
(1)前置++ 如++a的写法
Rational &operator++(){
a++;
return *this;
}
(2)后置++ 如a++的写法
Rational operator++(int){
Rational t=*this;
++(*this);
return t;
}
四、判断==,自加+=,自减等
(1)判断对象是否相等
bool operator==(const Rational &x)const{
if (x.a == this->a)
return true;
else
return false;
}
(2)+=运算符重载
Rational operator +=(const Rational &x){
return Rational(this->a+=x.a);
}
以下是源代码
#include<iostream>
using namespace std;
class Rational
{
public:
Rational(int a=0):a(a){}
~Rational(){}
void show(){
cout << a;
}
Rational multiply(const Rational x) const{
return Rational(this->a*x.a);
}
friend Rational pluss(const Rational &x,const Rational &y) {
return Rational(y.a + x.a);
}
Rational operator*(const Rational &x) const{
return Rational(x.a * this->a);
}
friend Rational operator+(const Rational &x,const Rational &y){
return Rational(x.a + y.a);
}
friend ostream& operator<<(ostream &out, Rational x){
out <<x.a;
return out;
}
friend istream& operator>>(istream &in, Rational &x){
in >> x.a;
return in;
}
Rational &operator++(){
a++;
return *this;
}
Rational operator++(int){
Rational t=*this;
++(*this);
return t;
}
bool operator==(const Rational &x)const{
if (x.a == this->a)
return true;
else
return false;
}
Rational operator +=(const Rational &x){
return Rational(this->a+=x.a);
}
private:
int a;
};
int main(){
int a, b;
while (true){
cout << "******************************" << endl;
Rational x, y, c;
cout << "用operator重载输入" << endl;
cin >> x >> y;
cout << "用multiply成员函数计算乘法" << endl;
cout << "a*b=";
c = x.multiply(y);
c.show();
cout << endl;
cout << "用友元plus成员函数计算乘法" << endl;
cout << "a+b=";
c = pluss(x,y);
c.show();
cout << endl;
cout << "用operator运算符重载计算乘法" << endl;
cout << "a*b=";
c = x*y;
c.show();
cout << endl;
cout << "用友元operator运算符重载计算加法" << endl;
cout << "a+b=";
c = x + y;
c.show();
cout << endl;
cout << "用operator运算符重载输出流" << endl;
cout << "a+b=";
c = x + y;
cout << c<<endl;
}
return 0;
}
分享到:
相关推荐
详细介绍 C++运算符重载 的PPT 文中部分内容: 下标运算符“[ ]”重载 C++把下标运算符[ ]看成一个双目运算符,其操作数为<基本表达式>和<表达式>,对应的运算符为operator[ ],必须重载为一个成员函数。对于下标...
C++允许重载的运算符和不允许...C++运算符重载的规则 C++对运算符重载定义了如下几条规则。 1) C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。 例如,有人觉得BASIC中用“**“作为幂运算符很方便
一个实例,实现运算符重载(成员函数和非成员函数两种方式),友元函数的使用,注意事项等,自己学习时编写的,
中国农业大学C++课程课件,信息与电气工程学院学生专用。
一个c++运算符重载例子.属于原创,代码比较清晰
里面是一些关于C++运算符重载转换运算符的讲解
c++运算符重载,重载运算符
C++运算符重载:赋予运算符另一种作用,实现自定义类型的运算C++运算符重载内容: 1.友元重载 2.类重载 3.输入输出流重载
C++运算符重载适合学习c++的同学,仅供参考C++运算符重载C++运算符重载
c++运算符重载矩阵运算 题目:对具有同行列数的整形矩阵进行加、减、乘、转置、赋值运算
这个是使用C++是实现的矩阵基本运算,使用了运算符重载技术和动态生成数组技术!
#include using std::cout; using std::cin; using std::endl; class complex { public : friend complex operator -(complex &a, complex &b) { complex c; c.s=a.s-b.s; c.x=a.x-b.x; return c;...}
C++运算符重载总结,对学习的朋友可以做参考。
C++运算符重载.ppt
此课件内容包括: 1 运算符 2 运算符重载概述 3 运算符重载的两种形式(重点) 运算符是代表某种运算功能的符号。 课件中讲解的实例也在些文件中。
C++运算符重载教学和编程中易被忽视的问题
c++运算符重载矩阵运算.pdf