code bewerten
-
otze schrieb:
nur gut, dass es keinen sinnvollen Fall gibt, bei dem man als argument entweder einen int oder einen null-zeiger erwarten kann

Nur gut, dass jeder Programmierer auf der Welt nur sinnvolle Überladungen erstellt

-
aMan schrieb:
warum kann man eigentlich bei templates den code nicht von der implementierung trennen?
Weil der Compiler bei der Verarbeitung des Templates wissen muß, (a) wie das Template aufgebaut ist (Quelltext) und (b) mit welchen Typen es verwendet wird (instantiierung). Die Informationen hat er nur zusammen, wenn du den Code direkt in dein Programm inkludierst.
-
CStoll schrieb:
aMan schrieb:
warum kann man eigentlich bei templates den code nicht von der implementierung trennen?
Weil der Compiler bei der Verarbeitung des Templates wissen muß, (a) wie das Template aufgebaut ist (Quelltext) und (b) mit welchen Typen es verwendet wird (instantiierung). Die Informationen hat er nur zusammen, wenn du den Code direkt in dein Programm inkludierst.
Könnte man sich die Codeguards ansonsten nicht auch sparen?
Oder gibt es noch andere solche fälle, wo Definitionen im Header stehen?
-
roan312 schrieb:
Könnte man sich die Codeguards ansonsten nicht auch sparen?
Oder gibt es noch andere solche fälle, wo Definitionen im Header stehen?Includeguards (ich nehme an, dass du die meinst) haben mit Definitionen in Headerdateien nichts zu tun. Include-Guards verhindern das mehrfache Einbinden einer Headerdatei in einer Übersetzungseinheit. Damit lassen sich z.B. unendliche Includerekursionen verhindern. Definitionen in Headerdateien können nur zwischen mehreren Übersetzungseinheiten Probleme machen.
-
MFK schrieb:
roan312 schrieb:
Könnte man sich die Codeguards ansonsten nicht auch sparen?
Oder gibt es noch andere solche fälle, wo Definitionen im Header stehen?Includeguards (ich nehme an, dass du die meinst) haben mit Definitionen in Headerdateien nichts zu tun. Include-Guards verhindern das mehrfache Einbinden einer Headerdatei in einer Übersetzungseinheit. Damit lassen sich z.B. unendliche Includerekursionen verhindern. Definitionen in Headerdateien können nur zwischen mehreren Übersetzungseinheiten Probleme machen.
Das mit den Includerekursionen stimmt, daran hab ich nicht gedacht,
aber mehrfach Definitionen innerhalb einer Übersetzungseinheit machen auch schwierigkeiten.EDIT:
class foo {}; class foo {};Redifinition if class foo...
-
ok, danke leuds..
koennt ihr mir noch sagen, welche der beiden (alt und neu) deleteCurrentElement() methoden besser ist?
-
otze schrieb:
std::cout.rdbuf()->pubsetbuf(NULL,0); schaltet buffering in der console aus.
man könnte sich das auch sparen indem man sowas schreibt:
void pubsetbuf(size_t length, char* pointer = 0);somit wäre es dem autor der funktion überlassen, ob er 0 oder NULL verwendet, da er in jedem falle sofort sieht, dass hier ein zeiger genullt wird.
imo ist diese lösung sogar zu bevorzugen, weil hier ein sprachmittel von c++ genutzt wird, dass funktionsaufrufe erleichtern soll.