Вот класс 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..
Я не часто вижу эти два, но похожие соглашения.
Должен ли я сломать или принять привычку?