Zum Inhalt springen

C++: Objektliste


AndiE

Empfohlene Beiträge

Hallo,

dieses Beispiel habe ich heute als Testprogramm erstellt. Es zeigt, wie einfach eine (doppelt verkettete) Liste von Klassen mit STL und C++ erstellt werden kann.

Ich hatte mich vorher noch nie damit befasst, und ich bin schlichtweg begeistert und erstaunt über die Einfachheit. Vielleicht hilft es auch anderen beim Verständnis.

LG

Andrè


// Objektliste.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.

//


#include "stdafx.h"

#include <list>

#include <iostream>

#include <string>


using namespace std;


class Kunden

{

public:

	Kunden();

	~Kunden();

	string name;

	string telefon;

};


typedef list<class Kunden> Kundenliste;


Kunden::Kunden()

{}

Kunden::~Kunden()

{}


int main(int argc, char* argv[])

{

	int i;

	Kundenliste liste;

	Kundenliste::iterator index;

	Kunden Kunde1;


	Kunden eintrag;


	cout << "Name eingeben" <<endl;

	cin >> Kunde1.name;


	for (i=0;i<5;i++)

	liste.push_back( Kunde1);


	cout << liste.size() << endl;

	for (index=liste.begin();index!=liste.end();index++)

	{

		eintrag=*index;

		cout << eintrag.name <<endl;

	}	

	cin >> i; 


	return 0;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein paar Anmerkungen:

  • Die Klasse braucht weder Defaultkonstruktor noch Destruktor. Die automatisch generierten tun das Richtige.
  • In C++ deklariert man die Variablen üblicherweise erst dann, wenn man sie braucht, nicht am Anfang des Blocks.
  • Erhöhe den Iterator besser mit Preincrement. Postincrement ist potentiell langsamer, weil es eine Kopie des Iterators anlegen muss. Überhaupt sollte man sich angewöhnen, immer Preincrement zu benutzen, es sei denn, man braucht den besonderen Effekt von Postincrement.
  • Du brauchst kein Objekt der Klasse für die Ausgabe, das geht auch direkt über den Iterator:

cout << index->name <<endl;

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Die Klasse braucht weder Defaultkonstruktor noch Destruktor. Die automatisch generierten tun das Richtige.

Wieso wird denn in jedem Buch angepriesen, diese selber zu erstellen? Ich find's immer wieder lustig. Klar, ich glaub dir, dass die das richtige tun, aber das ist ja so als wenn in nem Mathebuch steht "Das Zeichen musst du hinschreiben", muss man aber gar nicht.



  • In C++ deklariert man die Variablen üblicherweise erst dann, wenn man sie braucht, nicht am Anfang des Blocks.

Ich befinde mich im Moment in der Ausbildung, deshalb möchte ich jetzt nicht das Wort gegen einen erfahrenen C++ Programmierer erheben...

:uli

...aber der Code wird um ein Vielfaches einfacher, wenn man die Variablendeklaration in den Kopf packt. Wenn du nach einem Monat auf dein Programm guckst, denkst du dir "okay ... so war das ... ja genau so !". Aber wenn du mal 2 Jahre später von einem Kunden die Anfrage bekommst, da etwas zu erweitern, musst du dich erst wieder 2-3 Stunden einarbeiten, bevor du das verstehst, was du damals gemacht hast.

Ich kann jedem nur den Tipp geben, auch wenn's mühsam ist, seinen Code immer zu dokumentieren und "nützliche" Funktionen immer auf nem USB-Stick mit sich rumzuschleppen. Ich fahre mit dieser Strategie seit 3 Jahren super !

:mod:

Link zu diesem Kommentar
Auf anderen Seiten teilen

...aber der Code wird um ein Vielfaches einfacher, wenn man die Variablendeklaration in den Kopf packt. Wenn du nach einem Monat auf dein Programm guckst, denkst du dir "okay ... so war das ... ja genau so !". Aber wenn du mal 2 Jahre später von einem Kunden die Anfrage bekommst, da etwas zu erweitern, musst du dich erst wieder 2-3 Stunden einarbeiten, bevor du das verstehst, was du damals gemacht hast.

Einfacher nicht, maximal übersichtlicher und das auch nicht immer.

Da eine Variable nur innerhalb eines Blockes gilt, muss man halt nur das richtige Verhältnis zwischen Erzeugen/Zerstören des Objektes und Speicherplatzverwendung jenes finden.

Das Erstellen aller Variablen im Kopf ist sowieso C-Sache.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wieso wird denn in jedem Buch angepriesen, diese selber zu erstellen?
Keine Ahnung, ich habe nicht jedes Buch gelesen. Ehrlich gesagt, erinnere ich mich an keines, in dem dazu geraten wurde, unbedingt Konstruktoren zu erstellen. Kannst du ein Beispiel bringen?

Ich befinde mich im Moment in der Ausbildung, deshalb möchte ich jetzt nicht das Wort gegen einen erfahrenen C++ Programmierer erheben...

...aber der Code wird um ein Vielfaches einfacher, wenn man die Variablendeklaration in den Kopf packt.

Das ist Ansichtssache, und hängt vermutlich eher davon ab, was man gewöhnt ist. Wenn man von C kommt, wo es (zumindest nach dem Standard von 1989) gar nicht anders geht, kommt einem das Deklarieren von Variablen mitten im Code sicher unübersichtlich vor.

Zudem ist es effizienter, Variablen erst dort anzulegen, wo sie gebraucht werden. Im Gegensatz zu C können einfache Variablendeklarationen eine Menge Code erzeugen (Konstruktoren). Wenn man das so spät wie möglich macht (z.B. erst nachdem Prüfungen der Vorbedingungen abgeschlossen sind), kann man viel Zeit sparen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Klar,

habt ihr beide auf jeden Fall recht mit. Da ich ursprünglich aus der VB-Programmierung komme, ist es für mich vielleicht auch einfach ungewohnt, hier Code von von Externen zu bekommen und den nur relativ schwer zu verstehen, weil die Variablen irgendwo im Programm definiert werden.

Danke für eure Beiträge

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...