Aqui está uma classe C ++ que é construída com três valores.
class Foo{
//Constructor
Foo(std::string, int, char);
private:
std::string foo;
char bar;
int baz;
};
Todos os tipos de parâmetros são diferentes.
Eu poderia sobrecarregar o construtor para que a ordem não importasse.
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;
};
Mas isso é uma boa ideia?
Comecei a fazê-lo porque sabia de que coisas uma classe / função precisava;
Eu nem sempre me lembrava em que ordem eles os levavam.
Eu assumo que o compilador otimiza isso como se eu chamasse o mesmo construtor.
//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");
Quais são as suas opiniões sobre sobrecarregar uma função para que o pedido não seja importante?
Além disso, se estou escrevendo algumas funções utilitárias,
é uma boa idéia fornecer nomes de funções diferentes que façam a mesma coisa?
por exemplo.
void Do_Foo();
void DoFoo();
void do_foo();
//etc..
Não vejo frequentemente essas duas convenções semelhantes.
Devo quebrar ou adotar o hábito?