Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

C++طريقة تعريف دالة ترجع قيمة ليس لها نوع محدد

في المثال التالي قمنا بتعريف الحرف T كنوع بيانات غير محدد.
بعدها قمنا بتعريف دالة إسمها divide() عند استدعائها نمرر لها عددين, فترجع ناتج قسمة العددين على بعضهما بالنوع الذي نريده.

الفكرة هنا أننا نريد جعل الدالة تقبل أعداد صحيحة و أعداد عشرية (فيها فاصلة) مع إمكانية الحصول على الناتج متضمناً أي أرقام تكون بعض الفاصلة أو بدونها.

مثال

main.cpp
#include <iostream>
using namespace std;
// و هو خاص بالدالة التي سنقوم بتعريفها بعده T هنا قمنا بتعريف نوع بيانات غير محدد قمنا بتسميته
template <typename T>
// فتقوم بإرجاع ناتج قسمتهما بالنوع الذي نريده y و x عند استدعائها نمرر لها عددين مكان الباراميترين divide هنا قمنا بتعريف دالة إسمها
T divide(double x, double y)
{
return x/y;
}
// main() هنا قمنا بتعريف الدالة
int main()
{
// int في الدالة الأصلية سيتم تبديله بالنوع T لمعرفة ناتج قسمة 5 على 2 مع تحديد أن الحرف divide() هنا قمنا باستدعاء الدالة
cout << "divide<int>(5,2) = " << divide<int>(5,2) << endl;
// double في الدالة الأصلية سيتم تبديله بالنوع T لمعرفة ناتج قسمة 5 على 2 مع تحديد أن الحرف divide() هنا قمنا باستدعاء الدالة
cout << "divide<double>(5,2) = " << divide<double>(5,2);
return 0;
}
#include <iostream> using namespace std; // و هو خاص بالدالة التي سنقوم بتعريفها بعده T هنا قمنا بتعريف نوع بيانات غير محدد قمنا بتسميته template <typename T> // فتقوم بإرجاع ناتج قسمتهما بالنوع الذي نريده y و x عند استدعائها نمرر لها عددين مكان الباراميترين divide هنا قمنا بتعريف دالة إسمها T divide(double x, double y) { return x/y; } // main() هنا قمنا بتعريف الدالة int main() { // int في الدالة الأصلية سيتم تبديله بالنوع T لمعرفة ناتج قسمة 5 على 2 مع تحديد أن الحرف divide() هنا قمنا باستدعاء الدالة cout << "divide<int>(5,2) = " << divide<int>(5,2) << endl; // double في الدالة الأصلية سيتم تبديله بالنوع T لمعرفة ناتج قسمة 5 على 2 مع تحديد أن الحرف divide() هنا قمنا باستدعاء الدالة cout << "divide<double>(5,2) = " << divide<double>(5,2); return 0; }

سنحصل على النتيجة التالية عند التشغيل.

divide<int>(5,2) = 2
divide<double>(5,2) = 2.5