Aquí hay una clase de C ++ que se construye con tres valores.
class Foo{
//Constructor
Foo(std::string, int, char);
private:
std::string foo;
char bar;
int baz;
};
Todos los tipos de parámetros son diferentes.
Podría sobrecargar el constructor para que el orden no importe.
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;
};
¿Pero es una buena idea?
Empecé a hacerlo porque sabía qué cosas necesitaba una clase / función;
No siempre recordé en qué orden los tomó.
He estado asumiendo que el compilador optimiza esto como si llamara al mismo constructor.
//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");
¿Cuáles son sus opiniones sobre sobrecargar una función para que el orden no importe?
Además, si estoy escribiendo algunas funciones de utilidad,
¿es una buena idea proporcionar diferentes nombres de funciones que hagan lo mismo?
p.ej.
void Do_Foo();
void DoFoo();
void do_foo();
//etc..
No veo a menudo estas dos convenciones pero similares.
¿Debo romper o abrazar el hábito?