Frage wegen Copy Const
-
Mal ne frage der Copy Construktor der ist doch nichts anderes als eine Refernz auf ein Objekt ?
Oder was genau ist das ?
2.Kann man einen Copy konstruktor auf eine andere klasse anwedenen oder nur auf die Klasse in der der Copy Konstruktor erstellt wird
class Feld{...
class Spiel{..
//Konsruktor:
Spiel(const Feld &b)
{..
}Wäre sowas möglich
-
Möglich ist es, aber es ist kein Copy-C'tor.
Es ist dann lediglich ein spezialisierter C'tor.Ein Copy-C'tor muss immer den eigenen Typ "kopieren".
MfG
evilissimo
-
Dirk450 schrieb:
Mal ne frage der Copy Construktor der ist doch nichts anderes als eine Refernz auf ein Objekt ?
nein.
Dirk450 schrieb:
Oder was genau ist das ?
Mit dem Copy Constructor erstellst du ein neues Objekt als Kopie eines anderen. Deswegen heisst's ja auch Copy Constructor...
Dirk450 schrieb:
class Feld{... class Spiel{.. //Konsruktor: Spiel(const Feld &b) {.. }
Wäre sowas möglich
Das ist natürlich möglich, aber kein Copy Constructor.
-
class Datum { private: int m_tag; int m_monat; public: Datum(int tag, int monat) {m_tag = tag; m_monat = monat;} void setzeTag(int tag) {m_tag = tag;} void setzeMonat(int monat) {m_monat = monat;} int gibTag() {return m_tag;} int gibMonat() {return m_monat;} }; class Konto { private: int m_kontonummer; int m_saldo; Datum *m_p_eroeff; public: Konto(int kontonummer, int saldo, const Datum &eroeff); int gibKontonummer() {return m_kontonummer;} int gibSaldo() {return m_saldo;} Datum gibEroeffdat() {return *m_p_eroeff;} int gibEroeffmonat() {return m_p_eroeff->gibMonat();} }; Konto::Konto(int kontonummer, int saldo, const Datum &eroeff) { m_p_eroeff = new Datum(eroeff.gibTag(), eroeff.gibMonat()); m_kontonummer = kontonummer; m_saldo = saldo; }
Bei dem Beispiel hier da ist doch &eroeff geht nicht da das Datum eine zu niedrige qualifikation hat oder ?
Oder liegt es an was anderem?
Danke für die schnelle antwort !
-
1. der copy-constructor erzeugt ein neues objekt das mit den daten eines anderen objektes initialisiert wird welches als referenz übergeben wird ( erzeugt eine kopie des referenzierten objektes).
2. ist natürlich möglich aber das ist kein copy-constructor.
K.
edit: viel zu spät
-
[cpp]
class Datum {
...
int gibTag() const {return m_tag;}
int gibMonat() const {return m_monat;}
...
[/cpp]
Hat aber immer noch nichts mit einem Copy-C'tor zu tun.Davon ab:
-Lern Deutsch (deine "Fehlerbeschreibung" war nicht wirklich aufschlussreich:))
-Lern Englisch ("Qualifiers")
-Schnapp dir ein Buch und schlag unter "const" nach
-
m_p_eroeff = new Datum(eroeff);
das wäre ein aufruf eines copy-constructors.
K.