মূল কন্টেন্টে যান
মডিউল 8 · 1-এর পাঠ 2কোর্সে 17/18~12 min
মডিউল পাঠ (1/2)

ফাংশন টেমপ্লেট

টেমপ্লেট C++ এ জেনেরিক কোড লেখার অনুমতি দেয়। টেমপ্লেটগুলির মাধ্যমে, আমরা জেনেরিক টাইপ প্যারামিটারে কাজ করে এমন ফাংশন বা ক্লাসগুলিকে সংজ্ঞায়িত করতে পারি, কম্পাইলারকে অনুরোধ করা নির্দিষ্ট ধরণের জন্য প্রকৃত কোড তৈরি করতে দেয়।

একটি ফাংশন টেমপ্লেট সংজ্ঞায়িত করা

একটি ফাংশন টেমপ্লেট সংজ্ঞায়িত করার জন্য, আমরা template কীওয়ার্ড দিয়ে ফাংশন সংজ্ঞার আগে, তারপরে কোণ বন্ধনী <> এ টাইপ প্যারামিটারের তালিকাটি অনুসরণ করি। সাধারণত, typename বা class একটি জেনেরিক প্রকার ঘোষণা করতে ব্যবহৃত হয়।

C++
// T is the generic type parameter
template <typename T>
T add(T a, T b) {
    return a + b;
}

ফাংশন কল এবং টেমপ্লেট আর্গুমেন্ট ডিডাকশন

যখন আমরা ফাংশনটি কল করি, তখন আমরা স্পষ্টভাবে কোণ বন্ধনীতে টাইপ নির্দিষ্ট করতে পারি:

C++
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);

যাইহোক, C++ কম্পাইলার সাধারণত পাস করা ইনপুট প্যারামিটার (টেমপ্লেট আর্গুমেন্ট ডিডাকশন) থেকে স্বয়ংক্রিয়ভাবে **টাইপ নির্ণয় করতে সক্ষম হয়:

C++
int res1 = add(5, 10); // The compiler deduces that T is int

নিজে চেষ্টা করে দেখুন

ব্যায়াম#cpp.m8.l1.e1
প্রচেষ্টা: 0লোড হচ্ছে...

myMax নামের একটি ফাংশন টেমপ্লেট সংজ্ঞায়িত করুন যা জেনেরিক টাইপ T এর দুটি প্যারামিটার নেয় এবং দুটির মধ্যে বড়টি প্রদান করে।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

`টেমপ্লেট &lt;টাইপনাম T>` লিখে শুরু করুন তারপর স্বাক্ষর `T myMax(T a, T b)` লিখুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#cpp.m8.l1.e2
প্রচেষ্টা: 0লোড হচ্ছে...

printPair নামে একটি ফাংশন টেমপ্লেট লিখুন যা বিভিন্ন জেনেরিক প্রকার T1 এবং T2 এর দুটি প্যারামিটার নেয় এবং std::cout ব্যবহার করে একটি স্পেস দ্বারা পৃথক করা দুটি আর্গুমেন্ট প্রিন্ট করে।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

টেমপ্লেট ঘোষণায় অবশ্যই দুটি প্যারামিটার উল্লেখ করতে হবে: `টেমপ্লেট &lt;টাইপনাম T1, টাইপনাম T2>`।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ