यहाँ एक 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..
मैं अक्सर इन दो लेकिन समान सम्मेलनों को नहीं देखता।
क्या मुझे आदत को तोड़ना चाहिए या गले लगाना चाहिए?