Dòng ghi PhanSo RutGon(); này em không hiểu lắm vì nó không phải constructor nhưng lại gọi tên giống class nên em hoang mang quá ạ. Em mới học hướng đối tượng mong mn giúp. Code ở dưới ạ
#include <iostream>
using namespace std;
// Con trỏ this
// Con trỏ this tham chiếu đến đối tượng đang gọi hàm thành phần
class PhanSo{
int TuSo, MauSo;
public:
PhanSo RutGon();
void Nhap();
void Xuat();
};
// Cách dùng thứ 1 của Con trỏ this : trỏ(tham chiếu) đến các thành phần của class hiện tại
void PhanSo::Nhap(){
cout<<"\n Nhap tu so : ";
//cin>>TuSo;
cin>>this->TuSo;
cout<<"\n Nhap mau so : ";
//cin>>MauSo;
cin>>this->MauSo;
}
void PhanSo::Xuat(){
cout<<this->TuSo<<"/"<<this->MauSo;
}
// Không dùng This nữa mà tạo đối tượng PS
PhanSo PhanSo::RutGon(){
int a,b;
PhanSo ps;
ps.TuSo=this->TuSo;
ps.MauSo=this->MauSo;
//Hàm tìm UCLN thông thường
a = abs(ps.TuSo);
b = abs(ps.MauSo);
while(a!=b){
if(a>b){
a=a-b;
}
else{
b=b-a;
}
}
ps.TuSo=TuSo/a;
ps.MauSo=MauSo/a;
// Giá trị của this->TuSo và this->MauSo không hề thay đổi
return ps; // Trả về giá trị của cái Class hiện tại
}
int main(){
PhanSo ps,ps2;
ps.Nhap();
ps2=ps.RutGon(); // ps.TuSo và ps.MauSo không hề thay đổi, chỉ trả về 1 ps đã thay đổi
//ps hoàn toàn không thay đổi
ps2.Xuat();
return 0;
}