#include <iostream>
#include <cmath>
#include <string>
#include <cstdlib>
#include <ctime>
class Kwadrat
{
private:
double bok;
public:
Kwadrat(double bok)
{
this->bok = bok;
}
Kwadrat operator+(Kwadrat k)
{
Kwadrat wynik(this->bok + k.bok);
return wynik;
}
double pole()
{
return bok + bok;
}
void wypisz()
{
std::cout << pole() << std::endl;
}
bool operator==(Kwadrat k)
{
return this->pole() == k.pole();
}
};
int main()
{
Kwadrat k1(55);
//k1.wypisz();
Kwadrat k2(55);
//k2.wypisz();
Kwadrat k3 = k1 == k2;
k3.wypisz();
return 0;
}
To taki testowy projekt. Pomińmy, że licząc pole kwadratu dodaję bok do boku a nie mnożę przez 4 bo tak jak piszę, jest to testowy projekt gdzie co chwilę coś zmieniam, sprawdzam i testuję.
Pytanie jest następujące: Dlaczego przy przeładowaniu operatorów "==", który zwraca false = 0 albo true = 1 to mi zwraca 2? I czy ten mój zapis w przypadku sprawdzanie, czy k1 jest równy k2 jest poprawny? Bo jak zapiszę "Kwadrat k3(k1==k2); to też zadziała, ale czy poprawnie?
Z góry dziękuję.