生活随笔
收集整理的這篇文章主要介紹了
小甲鱼c++学习视频之运算符重载
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、學習要點:
1.將分數定義為一個類,簡化處理過程,面向對象的思維,不僅有數據,還可以對一個分數進行操作,比如約分操作,加減乘除操作.
2.類的私有成員只能通過成員函數進行訪問.
3.分數的約分過程是分子和分母同時除以分子和分母的最大公約數.求兩個數的最大公約數用的是歐幾里得輾轉相除的原理.
二、實現代碼
#include<iostream>
#include<math.h>
#include<stdlib.h>
using namespace std;
class Rational{
public:Rational(
int num,
int denomi);Rational
operator+(Rational x);Rational
operator-(Rational x);Rational
operator*(Rational x);Rational
operator/(Rational x);
void print();
private:
int numerator;
int denominator;
void normalize();
};
Rational::Rational(
int num,
int denomi){numerator=num;denominator=denomi;normalize();
}
void Rational::normalize(){
if(denominator<
0){numerator=-numerator;denominator=-denominator;}
int t;
int a=
abs(numerator);
int b=
abs(denominator);
if(a>b){t=a%b;
while(t){a=b;b=t;t=a%b;}a=b;}
else{t=b%a;
while(t){b=a;a=t;t=b%a;}}numerator/=a;denominator/=a;}
Rational Rational::
operator+(Rational x){
int a=numerator;
int b=denominator;
int c=x.numerator;
int d=x.denominator;
int e=a*d+b*c;
int f=b*d;
return Rational(e,f);
}
Rational Rational::
operator-(Rational x){
int a=numerator;
int b=denominator;
int c=x.numerator;
int d=x.denominator;
int e=a*d-b*c;
int f=b*d;
return Rational(e,f);
}
Rational Rational::
operator*(Rational x){
int a=numerator;
int b=denominator;
int c=x.numerator;
int d=x.denominator;
int e=a*c;
int f=b*d;
return Rational(e,f);
}
Rational Rational::
operator/(Rational x){
int a=numerator;
int b=denominator;
int c=x.numerator;
int d=x.denominator;
int e=a*d;
int f=b*c;
return Rational(e,f);
}
void Rational::print(){
if(numerator%denominator==
0){
cout<<numerator/denominator;}
else{
cout<<numerator<<
'/'<<denominator;}
}
int main()
{Rational f1(
2,
16);Rational f2(
7,
8);Rational resadd=f1+f2;f1.print();
cout<<
'+';f2.print();
cout<<
'=';resadd.print();
cout<<
'\n';Rational ressub=f1-f2;f1.print();
cout<<
'-';f2.print();
cout<<
'=';ressub.print();
cout<<
'\n';Rational resmul=f1*f2;f1.print();
cout<<
'*';f2.print();
cout<<
'=';resmul.print();
cout<<
'\n';Rational resc=f1/f2;f1.print();
cout<<
'/';f2.print();
cout<<
'=';resc.print();
cout<<
'\n';system(
"pause");
return 0;
}
三、運行結果圖如下:
四、如有錯誤,請指教,相互交流學習。
總結
以上是生活随笔為你收集整理的小甲鱼c++学习视频之运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。