[Học OOP] Bài 7: Overload toán tử trong Lập trình hướng đối tượng c++ – Kiến Thức 24h

#include <iostream>

#include “PhanSo.h”

using

namespace

std

;

 

 

PhanSo

operator

+

(

PhanSo

a

,

PhanSo

b

)

{

    

a

=

a

.

rutgon

(

)

;

    

b

=

b

.

rutgon

(

)

;

    

PhanSo

res

(

a

.

tuSo*

b

.

mauSo

+

a

.

mauSo*

b

.

tuSo

,

a

.

mauSo*

b

.

mauSo

)

;

    

res

=

res

.

rutgon

(

)

;

    

return

res

;

}

 

PhanSo

operator

(

PhanSo

a

,

PhanSo

b

)

{

    

return

PhanSo

(

a

.

rutgon

(

)

+

b

.

rutgon

(

)

*

1

)

.

rutgon

(

)

;

}

 

PhanSo

operator*

(

PhanSo

a

,

PhanSo

b

)

{

    

a

=

a

.

rutgon

(

)

;

    

b

=

b

.

rutgon

(

)

;

    

PhanSo

res

(

a

.

tuSo*

b

.

tuSo

,

a

.

mauSo*

b

.

mauSo

)

;

    

res

=

res

.

rutgon

(

)

;

    

return

res

;

}

 

PhanSo

operator

/

(

PhanSo

a

,

PhanSo

b

)

{

    

b

=

b

.

rutgon

(

)

;

    

return

PhanSo

(

a

.

rutgon

(

)

*

PhanSo

(

b

.

mauSo

,

b

.

tuSo

)

)

.

rutgon

(

)

;

}

 

bool

operator

==

(

PhanSo

a

,

PhanSo

b

)

{

    

return

(

a

.

tuSo*

b

.

mauSo

==

a

.

mauSo*

b

.

tuSo

)

;

}

 

bool

operator

!=

(

PhanSo

a

,

PhanSo

b

)

{

    

return

!

(

a

==

b

)

;

}

 

bool

operator

>

(

PhanSo

a

,

PhanSo

b

)

{

    

return

(

a

.

tuSo*

b

.

mauSo

>

a

.

mauSo*

b

.

tuSo

)

;

}

 

bool

operator

>=

(

PhanSo

a

,

PhanSo

b

)

{

    

return

(

a

>

b

||

a

==

b

)

;

}

 

bool

operator

<

(

PhanSo

a

,

PhanSo

b

)

{

    

return

(

a

.

tuSo*

b

.

mauSo

<

a

.

mauSo*

b

.

tuSo

)

;

}

bool

operator

<=

(

PhanSo

a

,

PhanSo

b

)

{

    

return

(

a

<

b

||

a

==

b

)

;

}

ostream

&

operator

<<

(

ostream

&

os

,

PhanSo

a

)

{

    

a

.

chuanhoa

(

)

;

    

if

(

a

.

mauSo

==

1

)

        

os

<<

a

.

tuSo

<<

endl

;

    

else

        

os

<<

a

.

tuSo

<<

“/”

<<

a

.

mauSo

<<

“\n”

;

    

return

os

;

}

 

istream

&

operator

>>

(

istream

&

is

,

PhanSo

&

a

)

{

    

is

>>

a

.

tuSo

>>

a

.

mauSo

;

    

if

(

a

.

mauSo

==

0

)

        

throw

“Nhap sai, mau so phai khac 0!!\n”

;

    

return

is

;

}

 

int

main

(

)

{

    

PhanSo

a

,

b

;

    

try

    

{

        

cin

>>

a

>>

b

;

        

cout

<<

“Cong = “

<<

a

+

b

;

        

cout

<<

“Tru = “

<<

a

b

;

        

cout

<<

“Nhan = “

<<

a*

b

;

        

cout

<<

“Chia = “

<<

a

/

b

;

    

}

    

catch

(

const

char

*

msg

)

    

{

        

cerr

<<

msg

<<

endl

;

    

}

 

    

system

(

“pause”

)

;

    

return

0

;

}