Erinnern Sie sich noch an den Satz aus der letzten Lektion: „Eine Klasse ist die Abstraktion und Verallgemeinerung eines Objekts, und ein Objekt ist die Konkretheit und Instanz einer Klasse“? Nachdem Sie die Definition einer Klasse gelernt haben, besteht der nächste Schritt darin , Objekte zu erstellen und zu verwenden !
1. Erstellung von Objekten:
Eine Klasse ist eine Struktur, die Funktionen enthält. Sie wird zum Definieren von Variablen verwendet, bei denen es sich um ein sogenanntes „Objekt“ handelt Wenn diese Klasse definiert ist, kann man auch sagen: Ein Objekt instanziieren, das ist die Bedeutung!
Die Verwendung von Objekten ist dieselbe wie die Verwendung von Strukturen. Sie greifen hauptsächlich auf die darin enthaltenen Mitglieder zu, und auf sie wird alle zugegriffen , z.
StudentA;A.num=101;strcpy(A.name,dotcpp);A.score=100;A.print();
Es ist zu beachten, dass die Mitgliedsvariablen in der Klasse hier alle als öffentliche Typen deklariert sind. Wenn auf sie hauptsächlich über Objekte und Variablen in der Hauptfunktion zugegriffen wird, ist die Meldung von Fehlern verboten Der Grund dafür ist, dass die Variablen vom privaten Typ private Typen sind und keinen externen Zugriff zulassen.
Für private Variablen, die wir schützen, aber kontrollieren möchten, deklarieren wir sie normalerweise als private Typen und definieren dann gleichzeitig eine spezielle Zuweisungsmethode des öffentlichen Typs. Da interne Mitglieder auf privat deklarierte Variablen zugreifen können, können wir diese verwenden Öffentliche externe Methode zur indirekten Steuerung dieser privaten Mitglieder, um den Effekt der Kapselung und des Schutzes zu erzielen. Diese öffentliche Methode wird auch als externe Schnittstelle dieser Klasse bezeichnet. Bitte verstehen Sie diesen Satz!
2. Zeiger auf Objekt:
Wie gewöhnliche Variablen stellen Objekte auch einen kontinuierlichen Speicherplatz dar, sodass Sie auch einen Zeiger auf das Objekt erstellen können, d. h.ObjektzeigerUm die Adresse des Objekts zu speichern.
Dann ähnelt die Erstellungsmethode der Verwendung eines allgemeinen Typzeigers und die Definitionsmethode lautet wie folgt:
Klassenname * Zeigername;
Definieren Sie beispielsweise Student *p; definieren Sie einen Zeiger p vom Typ Clock. Es sollte klar sein, dass das Objekt hier nicht erstellt wird und der Konstruktor natürlich nicht aufgerufen wird. Als Nächstes können Sie diesem Zeiger die Adresse eines Klassenobjekts desselben Typs zuweisen und dann über -> auf die Mitglieder im Objekt zugreifen.
Der Code lautet wie folgt:
Student*p;StudentA;p=&A;p->print();
Oben beschrieben wird beschrieben, wie Objektzeiger nicht nur beim Zuweisen von Werten und beim Zugreifen auf Mitglieder verwendet werden, sondern auch beim Übergeben von Parametern. Es wird empfohlen, Zeiger zu verwenden, da sie Adressen übergeben und keine Zuweisungen zwischen Objekten kopieren, wodurch der Speicheraufwand verringert wird und die Effizienz verbessern.
3. Objektreferenz:
Referenz ist ein neuer Typ in C++. Eine Objektreferenz ist ein Alias für ein Klassenobjekt. Im Wesentlichen wird die Adresse des Klassenobjekts dem Referenztyp zugewiesen. Wie definiert man also die Verwendung? Zeigen Sie es Ihnen unten.
StudentA;Student&Aq=A;
Definieren Sie, wie im obigen Code gezeigt, ein Objekt vom Typ Student, definieren Sie dann mit & einen Referenztyp dieses Typs und weisen Sie Aq das A-Objekt als Initialisierung zu.
Zu beachten sind:
1. Wie Zeiger müssen beide vom gleichen Typ sein, bevor auf sie verwiesen werden kann.
2. Sofern der Rückgabewert oder Formalparameter einer Funktion nicht verwendet wird, müssen andere Referenztypen gleichzeitig initialisiert werden!
3. Der Referenztyp erstellt kein neues Objekt, daher wird der Konstruktor nicht aufgerufen.
Da es sich also um einen Alias eines Klassenobjekts handelt, ist die Verwendungsmethode dieselbe wie die des Klassenobjekts. Für den Zugriff wird die Methode alias.member verwendet, z. B.:
StudentA;Student&Aq=A;Aq.print();
Wie Sie sehen, ist das Wesentliche bei der Verwendung eines Referenztyps immer noch die gespeicherte Adresse. Daher entsteht unabhängig von der Parameterdefinition nicht zu viel Speicheraufwand. Gleichzeitig ist dies der Fall Wird genauso verwendet wie das Klassenobjekt selbst. Übergeben Sie beim Erstellen von Funktionsargumenten einfach das Referenzobjekt direkt, ohne Adresszeichen hinzuzufügen, damit es intuitiver und praktischer aussieht. Dies ist der Vorteil von Referenztypen.