Đây là một lớp C ++ được xây dựng với ba giá trị.
class Foo{
//Constructor
Foo(std::string, int, char);
private:
std::string foo;
char bar;
int baz;
};
Tất cả các loại tham số là khác nhau.
Tôi có thể quá tải hàm tạo để thứ tự không thành vấn đề.
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;
};
Nhưng đó có phải là một ý tưởng tốt?
Tôi bắt đầu làm điều đó bởi vì tôi biết những gì một lớp / chức năng cần thiết;
Tôi đã không luôn nhớ thứ tự nó đã đưa họ vào.
Tôi đã giả định rằng trình biên dịch tối ưu hóa điều này như thể tôi đã gọi cùng một hàm tạo.
//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");
Ý kiến của bạn về việc quá tải một chức năng để thứ tự không thành vấn đề?
Ngoài ra, nếu tôi đang viết một số chức năng tiện ích,
bạn có nên cung cấp các tên hàm khác nhau làm cùng một việc không?
ví dụ.
void Do_Foo();
void DoFoo();
void do_foo();
//etc..
Tôi không thường thấy hai quy ước này nhưng tương tự nhau.
Tôi nên phá vỡ hoặc nắm lấy thói quen?