Hallo Freunde der sicheren Speicherverwaltung,
einer meiner überheblichen Tutoren war doch tatsächlich der Ansicht, dass es KEINE Möglichkeit gibt, von außerhalb einer Klasse (C++) auf deren private Attribute zuzugreifen. Da musste ich natürlich dagegen wetten um ihn eines besseren zu belehren. Der Mann ist ohnehin einer der arroganteren Sorte (kurz: Klugscheißer), meine Lektion war einfach nötig, um ihn am Boden der Tatsachen zu halten. Ging um nix Großes, nur um eine Pizza, die ich gleich in vollen Zügen genießen werde, da er wohl oder übel einsehen musste, dass ich diese Wette gewonnen habe. Ich werd’ jetzt meine Pizza genießen gehen und wünsche Euch viel Spass mit meinem erdrückenden Argument, das mich diese Wette gewinnen lies. Also, hier mein Quelltext, der einen externen Zugriff auf ein privates Attribut ermöglicht:
Check this out.
DANYBOY
Code:
#include <iostream.h>
#include <string.h>
/* Hinweis: Folgende Klasse enthält KEINE publike (explizite)
Möglichkeit um das Passwort lesen zu können! Es
kann lediglich geschrieben werden!
*/
class AnyClass {
private:
// privates Passwort
char password[50];
public:
// öffentliche Methode, um privates Passwort zu setzen
void setPassword(char*);
};
void AnyClass::setPassword(char *p) {
strcpy(password, p);
};
int main(void) {
// Objekt instanziieren
AnyClass secret;
// Passwort setzen
secret.setPassword("If you're seeing this text, YOU'VE ALREADY LOST OUR BET!");
// Char-Zeiger auf Anfang von Objekt im Speicher (explizieter Typecast).
char *PChar = (char*)&secret;
// Char-Zeiger ausgeben
cout<<"Cracked Password --> "<<PChar;
// Warten auf Keypress
cin.get(); cin.get();
// result auf Null setzen
return 0;
};
(C) Dannyboy 2004
PS: Seit lieb zu Euren Tutoren.