همین الان یه نکته جالبی از cpp به ذهنم رسید
میدونستید در cpp میتونید چندین فانکشن با یک اسم داشته باشید؟
به اصطلاح بهش Function overloading میگن
اینجوریه که کامپایلر بر اساس نوع و تعداد پارامتر ورودی میدونه که کدوم فانکشن رو باید اجرا کنه
و با ساز و کار Name mangling که میاد اسم فانکشن ها رو در سطح باینری تغییر میده میتونیم چندین فانکشن با یک اسم داشته باشیم (در واقع در پشت صحنه دوباره فانکشن ها رو اسم گذاری میکنه)
حالا اینجا یه نمونه میبینیم که نوع پارامتر ها متفاوته و کمک کرده چند فانکشن با یک اسم داشته باشیم.
void print(int x) { std::cout << "int: " << x << std::endl; }
void print(double x) { std::cout << "double: " << x << std::endl; }
void print(char x) { std::cout << "char: " << x << std::endl; }
int main() {
print(42); // int: 42
print(3.14); // double: 3.14
print('A'); // char: A
}
اینجا هم تعداد پارامتر ها متفاوته:
void greet() { std::cout << "Hi!" << std::endl; }
void greet(std::string n) { std::cout << "Hi, " + n << std::endl; }
void greet(std::string n, int age) {
std::cout << "Hi " + n + ", age " + std::to_string(age) << std::endl;
}
البته که میتونیم هم این دوتا مورد باهم ترکیب کنیم
یعنی فانکشن ها هم از نظر تعداد پارامتر و هم از نظر نوع پارامتر متفاوت باشن
خیلی خوب تا حالا این مورد رو گفتیم فقط موند بحث اولویت ها که احیانا با مشکل ابهام مواجه نشید
که اونم به این شکله
1.Exact Match
2.Promotion
3.Standard
4.User-defined
5.Variadic
امید وارم براتون مفید بوده باشه
ممنونم که روی پست ها ری اکشن میزنید 🙏
#کاما_کد #سی_پلاس_پلای #برنامه_نویسی #نکته
#comma_code #cpp #programming #hint
@comma_code
@comma_code1
❤2👍2🔥1
2 · 371 ·