OhneName: anfängerfreundliches C++ Tutorial gesucht

Beitrag lesen

Hallo,

int drive(VEHICLE vehicle, LOCATION from, LOCATION to, PAYLOAD *payload);

An sowas hatte ich auch gedacht, aber ich erkenne auch hier wieder die Grundzüge des objektorientierten Denkens. Sind denn VEHICLE, LOCATION und PAYLOAD praktisch etwas anderes als Klassen?

Der Unterschied zu
vehicle.drive(from, to, &payload);
ist ja eigentlich nicht sonderlich groß.

for (i=0; i<SIZE; i++)
   { int square;
     square = i*i;

float root;
     root = sqrt(i);
   }

Ich würde die Schleife anders schreiben:
for(int i = 0; i < SIZE; i++)
{
    int square = i * i;
    // Mach was mit square
    float root = sqrt(i);
    // Mach was mit root
}

Ja, aber was ist, wenn du schon Essig und Öl angemixt hast, und dann schmeißt deine Salat-Methode plötzlich eine OutOfPepperException?

Du bist echt hartnäckig. Es wäre zu überlegen ob der Pfeffer dann nicht auch ein Parameter sein sollte, der am Anfang geprüft werden muss.

Scott Meyers argumentiert in Effektiv C++ programmieren damit dass die Objekterstellung teuer sein könnte und es gut möglich ist, dass zwischen Deklaration am Methodenanfang und Verwendung die Methode abbricht (z.B. wegen einer Exception) und das Objekt damit umsonst erzeugt worden wäre.

Joshua Bloch nennt in Effective Java als Grund, dass die Variable am Methodenanfang den Leser des Codes nur ablenkt und er eventuell an der Stelle wo sie benutzt wird den Typ der Variable schon wieder vergessen haben könnte. Außerdem nennt er eine bessere Wartbarkeit und eine reduzierte Fehleranfälligkeit.

Kann man in C99 mittlerweile Variablen an beliebigen Stellen deklarieren?

Dein Freund David Tribble erwähnt anonymous unions als "an incompatible C++ feature" (was ich aus der Praxis nur teilweise bestätigen kann), aber Kommentare mit // sind seiner Aussage nach auch in C99 okay (das hatte ich beim ersten Überfliegen anders verstanden).

Ich muss gestehen unions noch nie verwendet zu haben.

Gruss,
OhneName