c++流符号重载例子
来源:互联网 发布:网络培训系统 编辑:程序博客网 时间:2024/05/22 10:37
#include<iostream>
public:
Yls(){
fenzi=0;
fenmu=0;
};
Yls(int a,int b){
fenzi=a;
fenmu=b;
};
Yls operator+(Yls &point){
Yls yls;
yls.fenzi=fenzi+point.fenzi;
yls.fenmu=fenmu;
yls.normalize();
return yls;
}
Yls operator-(Yls &point2){
Yls yls2;
yls2.fenzi=fenzi-point2.fenzi;
yls2.fenmu=fenmu;
yls2.normalize();
return yls2;
}
Yls operator*(Yls &point){
Yls yls;
yls.fenzi=fenzi*point.fenzi;
yls.fenmu=fenmu*point.fenmu;
yls.normalize();
return yls;
}
Yls operator/(Yls &point){
Yls yls;
yls.fenzi=fenzi*point.fenmu;
yls.fenmu=fenmu*point.fenzi;
yls.normalize();
return yls;
}
int first(){
return fenzi;
}
int second(){
return fenmu;
}
private:
void normalize(){
if(fenmu<0){
fenzi*=-1;
fenmu*=-1;
}
int a=abs(fenzi),b=abs(fenmu),t;
while(b>0){
t=a%b;
a=b;
b=t;
}
fenzi/=a;
fenmu/=a;
};
int fenzi;
os<<yls.fenzi<<"/"<<yls.fenmu;
return os;
};
};
int main()
{
Yls ya(1,8);
Yls yb(9,8);
Yls yc;
std::cout<<"ya+yb=";
std::cout<<yc.first()<<"/"<<yc.second()<<"\n";
std::cout<<"ya-yb=";
std::cout<<(ya-yb).first()<<"/"<<(ya-yb).second()<<"\n";
yc=ya*yb;
std::cout<<"ya*yb=";
std::cout<<yc.first()<<"/"<<yc.second()<<"\n";
yc=ya/yb;
std::cout<<"ya/yb=";
std::cout<<yc.first()<<"/"<<yc.second()<<"\n";
//用重载后的<<可以轻松输出yls(有理数)为a/b(分数)形式
std::cout<<ya<<"\t"<<yb<<"\t"<<yc;
return 0;
}
#include<string>
//分数的加减乘除
//重载元素符+ - * /
public:
Yls(){
fenzi=0;
fenmu=0;
};
Yls(int a,int b){
fenzi=a;
fenmu=b;
};
Yls operator+(Yls &point){
Yls yls;
yls.fenzi=fenzi+point.fenzi;
yls.fenmu=fenmu;
yls.normalize();
return yls;
}
Yls operator-(Yls &point2){
Yls yls2;
yls2.fenzi=fenzi-point2.fenzi;
yls2.fenmu=fenmu;
yls2.normalize();
return yls2;
}
Yls operator*(Yls &point){
Yls yls;
yls.fenzi=fenzi*point.fenzi;
yls.fenmu=fenmu*point.fenmu;
yls.normalize();
return yls;
}
Yls operator/(Yls &point){
Yls yls;
yls.fenzi=fenzi*point.fenmu;
yls.fenmu=fenmu*point.fenzi;
yls.normalize();
return yls;
}
int first(){
return fenzi;
}
int second(){
return fenmu;
}
private:
void normalize(){
if(fenmu<0){
fenzi*=-1;
fenmu*=-1;
}
int a=abs(fenzi),b=abs(fenmu),t;
while(b>0){
t=a%b;
a=b;
b=t;
}
fenzi/=a;
fenmu/=a;
};
int fenzi;
int fenmu;
//声明为友元函数,依次将yls类型的分子分母输到流里,返回值一般是流对象
os<<yls.fenzi<<"/"<<yls.fenmu;
return os;
};
};
int main()
{
Yls ya(1,8);
Yls yb(9,8);
Yls yc;
yc=ya+yb;
//未用重载后的<<
std::cout<<"ya+yb=";
std::cout<<yc.first()<<"/"<<yc.second()<<"\n";
std::cout<<"ya-yb=";
std::cout<<(ya-yb).first()<<"/"<<(ya-yb).second()<<"\n";
yc=ya*yb;
std::cout<<"ya*yb=";
std::cout<<yc.first()<<"/"<<yc.second()<<"\n";
yc=ya/yb;
std::cout<<"ya/yb=";
std::cout<<yc.first()<<"/"<<yc.second()<<"\n";
//用重载后的<<可以轻松输出yls(有理数)为a/b(分数)形式
std::cout<<ya<<"\t"<<yb<<"\t"<<yc;
return 0;
}
0 0
- c++流符号重载例子
- C符号重载
- C语言中的符号重载
- C语言中的符号重载
- C语言中的符号重载
- C语言中的符号重载
- C语言中的符号重载
- C语言中的符号重载
- C语言拾遗(二):符号重载
- C语言中的符号重载,static
- []符号重载
- 符号重载
- C语言中的符号重载(Expert C Programming笔记)
- C语言里的符号重载《C专家编程》
- 重载例子
- C#符号重载
- 重载了>等符号:
- (转)运算符号重载
- POJ 1159 Palindrome(DP)
- JAVA加密与解密
- c++运算符重载
- C++回顾之内联函数及新类型转换运算符
- 九度oj 题目1012:畅通工程
- c++流符号重载例子
- 狼找兔子
- vuforia结合unity3d开发AR的androidAPP总结(三)
- Java学习从菜鸟变大鸟之二 输入输出流(IO)
- C#之DatabaseHelper
- 淺談Raid Cache Memory上應用的問題和實踐
- HDOJ 1561 The more, The Better
- win7与Ubuntu 13.04双系统修改启动项顺序
- android app学习进度