(C++) Konstruktor z parametrem typu klasy

Odpowiedz Nowy wątek
D.
2006-12-07 00:19
D.
0

Czy ktoś wie dlaczego nie można zadeklarować takiego konstruktora:

class Klasa {
public:
  Klasa(Klasa);
};

Kompilator (DevC++) pisze że można co najwyżej tak:

class Klasa {
public:
  Klasa(const Klasa&);
};

Pozostało 580 znaków

2006-12-07 00:49

Rejestracja: 14 lat temu

Ostatnio: 5 miesięcy temu

0

Poczytaj o konstruktorach kopiujących w C++.


Pozdrawia DzieX

int getRandomNumber() { return 4; }

Pozostało 580 znaków

D.
2006-12-07 01:00
D.
0

A jakieś konkretne pozycje? Bo jak się domyślam Ty nie znasz odpowiedzi na moje pytanie.

Pozostało 580 znaków

2006-12-07 09:25

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

Nie mozesz zrobic takiego konstruktora Klasa(Klasa) poniewaz jesli chcialbys utworzyc obkiekt klasa to musi on przyjac obiekt klasa. Skoro musi przyjac obiekt klasa tzn ze ten obiekt tez musi byc stworzony przez konstruktor, ktory przyjmuje obiekt klasa i tak w nieskonczonosc. To tak samo jak chcialbys uzyc do tworzenia ksiazek innych ksiazek. Tak sie nie da. Trzeba miec najpierw papier potem tekst potem tusz i dopiero mozesz drukowac ksiazke. A co do konstruktora kopijacego to przyjmuje on referencje do okiektu i kopijue go. Jesli masz klase z samych typow(int,double,bool itd.) to Ci sie on nie przyda. Moze on Ci sie przydac jak masz np wskaznik w klasie, ale i tak jeszcze o tym poczytaj. Przyklady w necie na pewno znajdziesz.

Pozostało 580 znaków

2006-12-07 21:06

Rejestracja: 14 lat temu

Ostatnio: 12 lat temu

0

Troche dziwnie że kompilator nie zezwala na to nawet jeśli mamy zadeklarowany konstruktor domyślny. Ale dla chcącego nic trudnego:

class Klasa {

public:
       Klasa() {}            
};

class Klasa2 : public Klasa {

public:
       Klasa2(Klasa) {}      

};

Pozostało 580 znaków

2006-12-07 21:31

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

Kompilator nie wie czy ty do obiektu klasa nastepnym razem uzyjesz konstruktora domyslnego czy swojego. To co napisales z dziedziczeniem ma juz sens. Klasa2 zawiera w sobie klase. Na przykladzie: Aby zrobic Pojazd(klasa pojazd) najpierw musisz wywolac knstruktory silnika kol itp a dopiero potem konstruktor samego pojazdu.

Pozostało 580 znaków

2006-12-09 13:58

Rejestracja: 14 lat temu

Ostatnio: 12 lat temu

0

Hibo, to co napisałeś to bardziej pasuje do kompozycji, a nie doi dziedziczenia.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0