Allgemeine Fragen zur Anwendung von bestimmten Sachen
-
Also mene fragen beziehen sich auf die anwendung von verschiedenen "gebilden"
mir wären praktische beispiele lieb!
Also zum Beispiel ein anonymer struct oder namensraum, wieso und wann benutzt man sowas?
Funktionszeiger (Arrays davon), wann benutzt man das sinnvoll?
Zurückgegebene Funktionszeiger (warum gibt man Funktionszeiger zurück, wo wird das angewendet?)
templates (ja wirklich), wo und wann benutzt man templates sinnvoll (ausser bei datentypen)
-
kann mir da niemand helfen?

-
geduld, geduld
(das mit den anony. namespaces würd mich nun auchmal interessieren..., hab das bisher nur bei lambda gesehen)
-
Also zum Beispiel ein anonymer struct oder namensraum, wieso und wann benutzt man sowas?
Anonyme structs habe ich unter der Kategorie "gibt's, ist sicher nützlich" eingestuft.
Anonyme Namensräume sind der Ersatz für statische Funktionen aus C - die dort enthaltenen Definitionen sind nur in der aktuellen Übersetzungseinheit bekannt, "stören" also den Nutzer deiner Bibliotheken nicht.Funktionszeiger (Arrays davon), wann benutzt man das sinnvoll?
Funktionszeiger verwendet man, um zur Laufzeit zu entscheiden, welche Funktion man tatsächlich aufrufen will. Damit kann man die Adresse einer Funktion quer durch sein System weiterreichen.
typedef double (*dfunc)(double); double integral(dfunc fun,double a,double b) { //berechne Integral[a..b] fun(x) dx } int main() { dfunc funcs[]={sin,cos,ln}; double st,en;int sel; cin>>st>>en>>sel; if(sel>3||sel<0) cout<<"Falsche Wahl\n"; else cout<<"Das Integral hat den Wert "<<integral(funcs[sel],st,en)<<endl; }Zurückgegebene Funktionszeiger (warum gibt man Funktionszeiger zurück, wo wird das angewendet?)
Siehe oben - Funktionszeiger kann man bequem durch das System weiterreichen. Also könnte ich auch eine Funktion schreiben, die nach irgendwelchen Kriterien einen Funktionszeiger erzeugt und dem Hauptprogramm zur Verfügung stellt.
(ein konkretes Anwendungsbeispiel sind DLLs - dort kann man per GetProcAddress() eine Funktion aus der Bibliothek suchen lassen und dann weiterverwenden)templates (ja wirklich), wo und wann benutzt man templates sinnvoll (ausser bei datentypen)
Templates sind dann sinnvoll, wenn eine Operation identisch für beliebige Datentypen angewendet werden kann. Z.B. ist es für einen Sortier-Algorithmus egal, ob er nun int's, string's oder User-Accounts soriteren soll (solange diese miteinander verglichen werden können) - statt also für jeden denkbaren Datentyp eine eigene Funktion (sort_int, sort_string, sort_User,...) zu definieren, erzeugt man eine Template-Funktion (sort<T>), die der Compiler je nach Bedarf für int, string, User,... umsetzen kann.
(das hat den Vorteil, daß diese Funktion auch auf Typen losgelassen werden kann, die heute noch gar nicht existieren)