[C++] Kopierkonstruktor Zugriff auf private-Member

robert

Well-known member
ID: 18683
L
28 April 2006
551
100
Hallo,

folgende Klasse als Ausgangspunkt:
PHP:
class Foo
{
  public: 
     Foo (const Foo &copyFoo);
 
  private:
     int *bar;
};
 
Foo::Foo(const Foo &copyFoo)
{
   this->bar = new int;
   this->bar = copyFoo.bar // Zulässig?
}

In einem Buch wurde das auch munter praktiziert.

Im Visual Studio 6 bekomm ich Fehlermeldungen um die Ohren gehauen, mit nem GCC (MinGW)-Compiler klappt das ohne Probleme.

Aber strenggenommen darf ich doch mit copyFoo.bar auf das Attribut bar nicht zugreifen. Ist das eine Ausnahme für Kopiekonstruktoren?
 
Zuletzt bearbeitet:
Nein es ist keine Ausnahme, da gleiche Objekte untereinander als friends deklariert sind. Kann man so sagen.

Der VS Compiler ist bischen zickig :). Aber der GCC mag auch nicht alles was der VS übersetzt.
 
Nein es ist keine Ausnahme, da gleiche Objekte untereinander als friends deklariert sind. Kann man so sagen.

Achso.

Da ich bisher weniger mit C++ zu tun hatte, interessiert mich dann jetzt doch noch, ob mein obiges Beispiel für den Kopierkonstruktur die gängige Praxis ist, oder ob man besser auch hier mittels setter/getter darauf zugreift.
 
Der Kopierkonstruktor wird eigentlich nur gebraucht wenn du dynamischen Speicher verwaltest im Objekt ansonsten machst der Default vom Compiler auch.

Und gängige Praxis keine Ahnung, ich habs letztes Semester in Programmieren so gelernt.