پارامترهای تابع
آشنایی با پارامترهای تابع، ارسال با مقدار و ارسال با مرجع
پارامترهای تابع
پارامترها (Parameters) مقادیری هستند که به تابع ارسال میشوند و تابع میتواند از آنها استفاده کند.
پارامترهای ورودی
void printInfo(string name, int age) {
cout << "نام: " << name << endl;
cout << "سن: " << age << endl;
}
ارسال با مقدار (Pass by Value)
در این روش، یک کپی از مقدار ارسال میشود و تغییرات روی اصل تأثیری ندارد.
void modifyValue(int x) {
x = 100; // فقط روی کپی تأثیر دارد
}
int main() {
int num = 5;
modifyValue(num);
cout << num; // هنوز 5 است
return 0;
}
ارسال با مرجع (Pass by Reference)
در این روش، مرجع متغیر ارسال میشود و تغییرات روی اصل اعمال میشود.
void modifyValue(int &x) {
x = 100; // روی اصل تأثیر دارد
}
int main() {
int num = 5;
modifyValue(num);
cout << num; // 100 شده است
return 0;
}
مقایسه ارسال با مقدار و مرجع
| ویژگی | با مقدار | با مرجع |
|---|---|---|
| کپی | بله | خیر |
| تغییر اصل | خیر | بله |
| سرعت | کندتر برای اشیاء بزرگ | سریعتر |
| حافظه | بیشتر | کمتر |
پارامترهای پیشفرض
void greet(string name, string title = "آقای") {
cout << title << " " << name << endl;
}
int main() {
greet("علی"); // آقای علی
greet("مریم", "خانم"); // خانم مریم
return 0;
}
تعداد متغیر پارامترها (Variadic Functions)
از C++11 به بعد
#include <iostream>
#include <cstdarg>
using namespace std;
int sum(int count, ...) {
va_list args;
va_start(args, count);
int total = 0;
for (int i = 0; i < count; i++) {
total += va_arg(args, int);
}
va_end(args);
return total;
}
int main() {
cout << sum(3, 1, 2, 3) << endl; // 6
cout << sum(5, 1, 2, 3, 4, 5) << endl; // 15
return 0;
}
پارامترهای const
void printString(const string &str) {
cout << str << endl;
// نمیتوان str را تغییر داد
}
بهترین شیوهها
- از ارسال با مرجع برای اشیاء بزرگ استفاده کنید
- از const برای پارامترهایی که نباید تغییر کنند استفاده کنید
- پارامترهای پیشفرض را در انتهای لیست قرار دهید
- نامهای معنادار برای پارامترها انتخاب کنید
نکات مهم
- ارسال با مقدار امنتر است
- ارسال با مرجع سریعتر است
- از const & برای رشتهها و اشیاء استفاده کنید
- پارامترهای پیشفرض باید آخر باشند
این مبحث بخشی از دوره آموزش کامل C++ است.