S
Spacy
Gast
Unser Prof. hat in einer alten Klausur folgenden Code vorgegeben:
Laut meinem C++ Buch werden Funktionszeiger aber folgendermaßen verwendet:
Der Unterschied besteht darin, zum Deklarieren und Aufrufen den Funktionsnamen mit oder ohne vorangestelltem * zu schreiben.
Also habe ich eben mal den Code angepasst:
Der g++ Compiler akzeptiert beides und es funktioniert auch beides korrekt. (Siehe main.cpp im Anhang)
Was genau ist der Unterschied?
PHP:
template <typename Iterator, typename ElementType>
void fuerAlle(Iterator anfang, Iterator ende, ElementType f(ElementType)) {
for (; anfang < ende; anfang++) {
*anfang = f(*anfang);
}
}
Laut meinem C++ Buch werden Funktionszeiger aber folgendermaßen verwendet:
PHP:
bool compare(double a, double b) { ... } // tatsächliche Funktion
int main() {
bool (*funcptr)(double, double); // deklarieren
funcptr = compare; // zuweisen
(*funcptr)(9.1, 7.2); // aufrufen
}
Der Unterschied besteht darin, zum Deklarieren und Aufrufen den Funktionsnamen mit oder ohne vorangestelltem * zu schreiben.
Also habe ich eben mal den Code angepasst:
PHP:
template <typename Iterator, typename ElementType>
void fuerAlle(Iterator anfang, Iterator ende, ElementType (*f)(ElementType)) {
for (; anfang < ende; anfang++) {
*anfang = (*f)(*anfang);
}
}
Der g++ Compiler akzeptiert beides und es funktioniert auch beides korrekt. (Siehe main.cpp im Anhang)
Was genau ist der Unterschied?
Anhänge
Zuletzt bearbeitet: