এখানে একটি সি ++ শ্রেণি রয়েছে যা তিনটি মান দিয়ে নির্মিত হয়।
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..
আমি প্রায়শই এই দুটি কিন্তু অনুরূপ কনভেনশন দেখতে পাই না।
আমার কি অভ্যাসটি ভেঙে দেওয়া উচিত?