কম্পিউটার

কেন C++ টেমপ্লেট শুধুমাত্র হেডার ফাইলে প্রয়োগ করা যেতে পারে?


যখন আপনি C++ এ একটি টেমপ্লেট ইনস্ট্যান্টিয়েট করেন, কম্পাইলার একটি নতুন ক্লাস তৈরি করে। এই ক্লাসে এমন সব জায়গা রয়েছে যেখানে আপনি টেমপ্লেট আর্গুমেন্টগুলিকে ব্যবহার করার সময় এটিতে পাস করা আসল আর্গুমেন্টের সাথে প্রতিস্থাপিত হয়েছে। উদাহরণস্বরূপ

template<typename T> class MyClass {
   T foo;
   T myMethod(T arg1, T arg2) {
      // Impl
   }
};

এবং আপনার প্রোগ্রামের কোথাও এই ক্লাসটি ব্যবহার করুন,

MyClass<int> x;

কম্পাইলার আপনার পাস করা প্রতিটি ধরণের আর্গুমেন্টের জন্য এটির মুখোমুখি হওয়ার পরে একটি নতুন ক্লাস তৈরি করে। উদাহরণস্বরূপ, আপনি যদি বিভিন্ন টেমপ্লেট আর্গুমেন্ট দিয়ে 3টি অবজেক্ট তৈরি করেন তাহলে আপনি 3টি ক্লাস পাবেন, যা −

এর সমতুল্য হবে।
class MyClassInt {
   int foo;
   int myMethod(int arg1, int arg2) {
      // Impl
   }
};

এটি করার জন্য, কম্পাইলারকে এই ধরনের বিবৃতির মুখোমুখি হওয়ার আগে ক্লাসের বাস্তবায়ন এবং পদ্ধতিগুলিতে অ্যাক্সেস থাকতে হবে, টেমপ্লেট আর্গুমেন্ট (এই ক্ষেত্রে int) দিয়ে তাদের ইনস্ট্যান্টিয়েট করার জন্য। যদি এই টেমপ্লেট শ্রেণীর বাস্তবায়ন শিরোনামে না থাকে, তাহলে সেগুলি অ্যাক্সেসযোগ্য হবে না এবং তাই কম্পাইল হবে না৷



  1. কেন আমার HTML ফাইল একটি উৎস মডিউল থেকে জাভাস্ক্রিপ্ট ফাংশন খুঁজে পেতে পারে না?

  2. C++ এ রেজিস্টার স্টোরেজ ক্লাস

  3. C++ এ অটো স্টোরেজ ক্লাস

  4. কেন C++ সেরা প্রোগ্রামিং ভাষা?