Hier ist eine C ++ - Klasse, die mit drei Werten erstellt wird.
class Foo{
//Constructor
Foo(std::string, int, char);
private:
std::string foo;
char bar;
int baz;
};
Alle Parametertypen sind unterschiedlich.
Ich könnte den Konstruktor überladen, damit die Reihenfolge keine Rolle spielt.
class Foo{
//Constructors
Foo(std::string, char, int);
Foo(std::string, int, char);
Foo(char, int, std::string);
Foo(char, std::string, int);
Foo(int, std::string, char);
Foo(int, char, std::string);
private:
std::string foo;
char bar;
int baz;
};
Aber ist das eine gute Idee?
Ich habe damit angefangen, weil ich wusste, welche Dinge eine Klasse / Funktion benötigt;
Ich erinnerte mich nicht immer an die Reihenfolge, in der sie aufgenommen wurden.
Ich bin davon ausgegangen, dass der Compiler dies optimiert, als ob ich den gleichen Konstruktor aufgerufen hätte.
//compiler will implement this with the same code?
//maybe not.. I could call a function to get a parameter,
//and that function could change the state of the program, before calling
//a function to get another parameter and the compiler would have to
//implement both
Foo foo1("hello",1,'a');
Foo foo2('z',0,"world");
Was halten Sie davon, eine Funktion zu überladen, damit die Reihenfolge keine Rolle spielt?
Auch wenn ich einige Dienstprogramme schreibe,
ist es eine gute Idee, verschiedene Funktionsnamen anzugeben, die dasselbe tun?
z.B.
void Do_Foo();
void DoFoo();
void do_foo();
//etc..
Ich sehe diese beiden Konventionen nicht oft, aber ähnlich.
Soll ich die Gewohnheit abbrechen oder annehmen?