Oto klasa C ++, która składa się z trzech wartości.
class Foo{
//Constructor
Foo(std::string, int, char);
private:
std::string foo;
char bar;
int baz;
};
Wszystkie typy parametrów są różne.
Mógłbym przeciążyć konstruktora, aby kolejność nie miała znaczenia.
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;
};
Ale czy to dobry pomysł?
Zacząłem to robić, ponieważ wiedziałem, czego potrzebuje klasa / funkcja;
Nie zawsze pamiętałem, w jakiej kolejności je przyjęli.
Zakładam, że kompilator optymalizuje to tak, jakbym wywoływał tego samego konstruktora.
//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");
Jakie są Twoje opinie na temat przeciążenia funkcji, aby kolejność nie miała znaczenia?
Ponadto, jeśli piszę jakieś funkcje narzędziowe,
czy dobrym pomysłem jest podanie różnych nazw funkcji, które robią to samo?
na przykład.
void Do_Foo();
void DoFoo();
void do_foo();
//etc..
Często nie widzę tych dwóch, ale podobnych konwencji.
Czy powinienem zerwać z nawykiem?