Here is a C++ class that gets constructed with three values.
class Foo{
//Constructor
Foo(std::string, int, char);
private:
std::string foo;
char bar;
int baz;
};
All of the parameter types are different.
I could overload the constructor so that order doesn't matter.
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;
};
But is that a good idea?
I started doing it because I knew what things a class/function needed;
I didn't always remember what order it took them in.
I've been assuming that the compiler optimizes this as if I called the same 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");
What are your opinions on overloading a function so that the order doesn't matter?
Also, If I'm writing some utility functions,
Is it a good idea to provide different function names that do the same thing?
eg.
void Do_Foo();
void DoFoo();
void do_foo();
//etc..
I don't often see these two but similar conventions.
Should I break or embrace the habit?