Gast
2009-11-01, 21:54:14
Ich habe mal eine Frage zum Überladen von Funktionen.
http://www.math.uni-wuppertal.de/~axel/skripte/oop/oop7_5.html
da steht, dass der Compiler keinen Unterschied sieht, wenn Parameter Konstanten sind.
Mit void test(int); und void test(const int); deklariert man allerdings dieselbe Funktion. Die Angabe const ist eine Information über das Verhalten der Funktion, nicht über ihre Signatur.
Defakto kann G++/GCC hier doch unterscheiden:
int foo(int a[], const int& l) { return 0;}
int foo(int a[], int& l) { return 0;}
Hier wurde in neuren Verionen von GCC wohl doch angepasst?!
Zweite Frage:
Ich habe hier ein Übungsblatt, siehe hierzu http://www.math.uni-wuppertal.de/wrswt/ws09/oop/blatt02_ws09.pdf von meiner Uni, ich habe die Aufgabe zwar gelöst, wollte aber mal wissen, ob das wirklich die optimale Lösung war: (Aufgabe 5 ist hier Thema), Password vom PDF = obprows09
using namespace normal;
using namespace rechnen;
int main () {
int a[] = {1,2,3,4,5};
double b[] = {0.1, 0.2, 0.3, 0.4, 0.5};
char c[] = {'a','b','c','d','e'};
ausgeben(a,5,true);
ausgeben(b,5,true);
ausgeben(c,5,true);
normal::ausgeben(a,5);
return 0;
}
http://www.math.uni-wuppertal.de/~axel/skripte/oop/oop7_5.html
da steht, dass der Compiler keinen Unterschied sieht, wenn Parameter Konstanten sind.
Mit void test(int); und void test(const int); deklariert man allerdings dieselbe Funktion. Die Angabe const ist eine Information über das Verhalten der Funktion, nicht über ihre Signatur.
Defakto kann G++/GCC hier doch unterscheiden:
int foo(int a[], const int& l) { return 0;}
int foo(int a[], int& l) { return 0;}
Hier wurde in neuren Verionen von GCC wohl doch angepasst?!
Zweite Frage:
Ich habe hier ein Übungsblatt, siehe hierzu http://www.math.uni-wuppertal.de/wrswt/ws09/oop/blatt02_ws09.pdf von meiner Uni, ich habe die Aufgabe zwar gelöst, wollte aber mal wissen, ob das wirklich die optimale Lösung war: (Aufgabe 5 ist hier Thema), Password vom PDF = obprows09
using namespace normal;
using namespace rechnen;
int main () {
int a[] = {1,2,3,4,5};
double b[] = {0.1, 0.2, 0.3, 0.4, 0.5};
char c[] = {'a','b','c','d','e'};
ausgeben(a,5,true);
ausgeben(b,5,true);
ausgeben(c,5,true);
normal::ausgeben(a,5);
return 0;
}