Hallo Leute,
in diesem Buch
http://www.amazon.de/Effektiv-programmieren-Verbesse…
wird folgendes abgeraten (deklarieren von Rechteck-Werten), da es lange Wartezeiten beim Kompilieren nach sich zieht:
// rect.h
class Rect
{ // int left, int right, etc.
Rect(const &Rect re) {}
};
// any.h
class Any
{
private:
Rect Re;
public:
Any(Rect re) : Re(re)
{}
};
Der Compiler weiß ja nicht, wie groß ein Rechteck ist, und braucht daher die Quelle, um das festzustellen.
Würde man aber seine Rechtecke u.a. generell als Zeiger deklarieren (und die #include nur in der main.cpp schreiben), sind die 4 Bytes Groesse von diesem ja bekannt, und das Kompilieren wird dadurch beschleunigt.
Das hört sich nun sehr einleuchtend an. Es erheben sich aber zwei Fragen:
Er meint wohl nur die Member-Variablen, nicht die Funktions-Argumente und Rückgabe-Werte? Diese können ruhig auch als Wert übergeben werden, da sie für „sizeof(Any)“ unerheblich sind, richtig?
Wenn die „rect.h“ schon vorkompiliert ist, wo ist dann das Problem? Dann müsste die „sizeof(Rect)“ ja bekannt sein. Der Compiler merkt das ja an Datum und Uhrzeit der Datei, daß er die „rect.h“ nicht mehr zu kompilieren braucht.
lg
Martin B