irgend wie ist eine private variable doch nicht so privat wie ich dachte... spinn ich?
-
jetzt programmiere ich schon seit einer ganzen weile mehr oder weniger intensiv in c++, doch der quark ist mir noch nie aufgefallen:
(ich meine, dass das geht)include <iostream> class test { public: test(int a, int b) : posx(a), posy(b){}; bool verg(test a) { if (this->posx == a.posx) return 1; //diese stelle meine ich //ich hätte gedacht, dass a.posx nicht geht, da posx privat ist else return 0; } private: int posx; int posy; }; int main (void) { test a(1,2); test b(1,6); std::cout<<a.verg(b); return 0; }
hebelt wie ich finde irgend wie die kapslung total aus
ist mir auch noch in keinem buch so aufgefallen
ich meine immer eine nette zugriffsfunktion gesehen zu habenhat eine programmierung in der art einen sinnvollen einsatz oder sollte man das auch eher nicht machen, wegen eben der überwundenen kapslung??
danke + cu
-
Das ist doch in der eigenen Klasse.
Das ist auch sehr nützlich das das geht.
-
Die Zugriffsmodifier public, protected und private beziehen sich auf Klassen, nicht auf Objekte.
-
Nicht ganz, protected bezieht sich auf Objekte.
-
Da bool verg(test a) eine Implementierung von class test ist, darf es logischerweise auch auf die private Members zu greifen. Da die Implementierung schliesslich seine eigenen Attribute immer noch am besten kennt.
Aber ich muß zugeben, das mir das bisher auch noch nie wirklich sooo bewusst war. Weil ich bisher immer die Methoden für nicht-this-Objekte benutzt habe... so rein instinktiv. Aber das es funktioniert, ist am Ende mehr als logisch legitim.
-
Hallo
solche Zugriffe sind sehr praktisch, wenn du Attribute (inklusive private) von einem Objekt in ein anderes der gleichen Klasse per Methode kopieren willst.
bis bald
akari
-
dann muss ich gestehen, habe ich in dem bereich immer eine falsche denke gehabt (immer auf objekte bezogen(von vererbung mal abgesehen), sprich dass die ihre daten verstecken würden(oder eben nicht) !!)
danke für die erleuchtung ...
-
Verstecken tun sie sie sowieso nicht, du kannst sie ja im Header der Klasse jederzeit einsehen (außer, man verwendet das Pimpl-Idiom
). Ist nur eine Zugriffskontrolle.