• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

przeładowany operator <<, w jego realizacji jest podawany komunikat

0 głosów
45 wizyt
pytanie zadane 22 czerwca w C i C++ przez MarekPrzywarek Nowicjusz (150 p.)

Witam Państwo! 

Napisałem chyba że połowa kodu, ale padłem na problem z przeładowanymi operatorami. Czy państwo mogą pomoc jak można to zrobić dalej i fajnie jeżeli ktoś wkrótce to opowiedziałby o przyładowanych operatorach:)

I mam pytanie jeszcze jedne, czy to jest konstruktor kopiujący? 
liczba_zespolona(liczba_zespolona, double& L) {        
double re = L.re;         double im = L.im;     }

To same zadanie:

Zamodelować klasę liczba_zespolona, która rozszerza publicznie klasę liczba. Klasa ma pola re i im typu double. Pola są prywatne. Należy dodać odpowiednie publiczne gettery i setery Klasa powinna posiadać konstruktor bezargumentowy, argumentowy oraz kopiujący. Metoda wypisz() ma podać na ekranie komunikat: Liczba zespolona: re + im*i (zamiast re i im są wyświetlane wartości pól re i im) Klasa posiada publiczną metodę moduł(), która zwraca wartość sqrt(re*re+im*im) Klasa powinna posiadać przeładowany operator <<. W jego realizacji jest podawany komunikat:

Oto liczba zespolona:
Wywołanie metody wypisz()
Wartośd modułu: wywołanie metody moduł()
Przykład:
liczba_zespolona l(1,2);
cout<<l
Oto liczba zespolona:
1+2i
Wartość modułu: 2.23606797749979

#include <iostream>
#include <string>
#include <math.h>
//kod który napisałem

using namespace std;

class liczba_zespolona
{
    liczba_zespolona();
    liczba_zespolona(double re, double im)
    {
        this -> re = re;
        this -> im = im;
    }
 /*   liczba_zespolona(liczba_zespolona, double& L)
    {
       double re = L.re;
        double im = L.im;
    }
     Czy to jest konstruktor kopiujący?
*/

private:
    double re;
    double im;

public:

    void GetReIm(double& re, double& im)
    {
        re = this -> re;
        im = this -> im;
    }
    void SetReIm(double re, double im)
    {
        this -> re = re;
        this -> im = im;
    }

    void wypisz()
    {
        cout << "Liczba zespolona:" << re << "+" << im << "*i";
    }
    double modul(double re, double im)
    {
        return sqrt(re*re+im*im);
    }
};
int main()
{
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 22 czerwca przez j23 Mędrzec (175,240 p.)
std::ostream& operator<< (std::ostream& os, const liczba_zespolona &l)
{
    os << "Oto liczba zespolona: \n";
    // itd.

    return os;
}

Czy to jest konstruktor kopiujący?

Nie. Tak powinno być:

liczba_zespolona(const liczba_zespolona &L)
    : re(L.re), im(L.im)
{}

Chociaż ta klasa nie potrzebuje jawnie zdefiniowanego konstruktora kopiującego. No ale jeśli taki jest wymóg...

komentarz 22 czerwca przez MarekPrzywarek Nowicjusz (150 p.)
Dziękuję Bardzo!

Podobne pytania

0 głosów
1 odpowiedź 63 wizyt
0 głosów
2 odpowiedzi 187 wizyt
pytanie zadane 9 października 2016 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)
+1 głos
0 odpowiedzi 212 wizyt

88,400 zapytań

137,011 odpowiedzi

305,796 komentarzy

58,657 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...