这是一个用三个值构造的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..
我很少看到这两个但相似的约定。
我应该打破还是接受这个习惯?
1
如果在某些情况下每种明确提供的方式明显优于其他任何一种方式,则仅应花费精力提供多种表达方式。这并不意味着人们通常应该花费很多精力来确保只能以一种规范的形式编写某些东西,但是做出允许以某种不是最好的方式指定某些东西的努力是没有意义的。
—
2013年