Ось клас C ++, який будується з трьома значеннями.
class Foo{
//Constructor
Foo(std::string, int, char);
private:
std::string foo;
char bar;
int baz;
};
Усі типи параметрів різні.
Я міг би перевантажити конструктор, щоб порядок не мав значення.
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;
};
Але це гарна ідея?
Я почав це робити, бо знав, які речі потрібні класу / функції;
Я не завжди пам’ятав, в якому порядку їх приймав.
Я припускав, що компілятор оптимізує це так, ніби я назвав той же конструктор.
//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");
Яка ваша думка щодо перевантаження функції, щоб порядок не мав значення?
Крім того, якщо я пишу деякі функції утиліти,
чи добре б надати різні імена функцій, які роблять те саме?
напр.
void Do_Foo();
void DoFoo();
void do_foo();
//etc..
Я часто не бачу цих двох, але подібних умов.
Чи слід порушувати або вживати звичку?