Klassen vs. Objekte
Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy. Lektion 6 von 104.
Eine Klasse ist ein Bauplan, der die Struktur definiert. Ein Objekt ist eine spezifische Instanz, die aus diesem Bauplan erstellt wurde.
Die Klasse (Bauplan)
class Car {
public:
std::string brand;
int year;
std::string getInfo() {
return brand + " (" + std::to_string(year) + ")";
}
};Mehrere Objekte (Instanzen) erstellen
Car car1;
car1.brand = "Tesla";
car1.year = 2023;
Car car2;
car2.brand = "Honda";
car2.year = 2020;
std::cout << car1.getInfo() << std::endl; // Tesla (2023)
std::cout << car2.getInfo() << std::endl; // Honda (2020)Jedes Objekt ist unabhängig. Das Ändern von car1 wirkt sich nicht auf car2 aus. Du kannst mehrere Objekte aus derselben Klasse erstellen, wobei jedes seine eigenen Daten enthält.
Aufgabe
MittelErstelle eine Car-Klasse (Vorlage). Das Programm erstellt daraus zwei separate Objekte (Instanzen), jeweils mit eigenen Daten:
- Öffentliche Member:
brand(String),year(int) getInfo(): gibt"<brand> (<year>)"zurück
Probier es selbst
#include <iostream>
#include "Car.h"
int main() {
std::string brand1, brand2;
int year1, year2;
std::getline(std::cin, brand1);
std::cin >> year1;
std::cin.ignore();
std::getline(std::cin, brand2);
std::cin >> year2;
Car car1;
car1.brand = brand1;
car1.year = year1;
Car car2;
car2.brand = brand2;
car2.year = year2;
std::cout << "Car 1: " << car1.getInfo() << std::endl;
std::cout << "Car 2: " << car2.getInfo() << std::endl;
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienC++ Build & KompilierungHeader-Dateien & QuelldateienNamespaces & GültigkeitsbereichEinführung in OOP mit C++Klassen vs. ObjekteDer „this“-ZeigerMethoden (Member-Funktionen)Attribute (Datenmember)Grundlagen zu Ctors & DtorsRückblick – Einfacher Taschenrechner4Klassenattribute
Instanz- vs. statische MemberGetter und SetterConst-MemberfunktionenMutable-SchlüsselwortStatische Methoden und VariablenFriend-Funktionen und -KlassenZusammenfassung – Bankkontoverwaltung7Vererbung
Grundlagen der VererbungZugriffsebenen bei der VererbungAufrufreihenfolge von Ctor & DtorÜberschreiben von MethodenVirtuelle Funktionen & VTableMehrfachvererbungVirtuelle VererbungRückblick – Mitarbeiterhierarchie2Speicherverwaltung
Stack- vs. Heap-SpeicherZeiger und ReferenzenDynamischer Speicher (new/delete)Intelligente Zeiger in C++RAII in C++Rückblick – Dynamischer Array-Manager5Kapselung
Zugriffsbezeichner in C++Zugriffsbezeichner im DetailInformationsverbergungStruct vs. KlasseVerschachtelte und innere KlassenWiederholung – Studierendenverwaltungssystem8Polymorphie
Polymorphie zur Compilezeit vs. LaufzeitFunktionsüberladungVirtuelle Funktionen erneut betrachtetRein virtuelle FunktionenAbstrakte KlassenInterface-Design in C++Dynamic Casting & RTTIRückblick – Shape-Calculator3Konstruktoren & Destruktoren
StandardkonstruktorParametrisierter KonstruktorKopierkonstruktorMove-KonstruktorKonstruktor-InitialisierungslistenDelegierende KonstruktorenDestruktor im DetailDrei-/Fünf-/Null-RegelZusammenfassung – String-Klasse6Operatorüberladung
Einführung in die OperatorüberladungArithmetische OperatorüberladungVergleichsoperatorüberladungStream-OperatorenZuweisungsoperatorüberladungÜberladung der Operatoren [] und ()TypkonvertierungsoperatorenWiederholung – Matrix-Klasse9Templates
FunktionstemplatesKlassen-TemplatesTemplate-SpezialisierungVariadische TemplatesGrundlagen zu SFINAE und Type TraitsRückblick – Generischer ContainerÜbe selbstständig: Online-C++-Compiler