কম্পিউটার টিউটোরিয়াল

C++-এ is_final টেমপ্লেট

এই আর্টিকেলে আমরা C++ STL-এ std::is_final টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।

is_final হলো একটি টেমপ্লেট যা <type_traits> হেডার ফাইলের অধীনে আসে। এই টেমপ্লেটটি ব্যবহার করা হয় দেওয়া টাইপ T একটি ফাইনাল ক্লাস কিনা তা চেক করার জন্য।

C++-এ ফাইনাল ক্লাস কী?

যখন আমরা একটি ক্লাসকে final স্পেসিফায়ার দিয়ে ডিক্লেয়ার করি তখন সেটাকে ফাইনাল ক্লাস বলা হয়। ফাইনাল ক্লাস হলো একটি বিশেষ ধরনের ক্লাস যা আর এক্সটেন্ড করা যাবে না অন্য ক্লাস তৈরি করতে। C++-এ একটি ক্লাসকে ফাইনাল বানাতে আমরা একটি ক্লাসকে ফ্রেন্ড বানাই এবং তারপর ভার্চুয়ালি ইনহেরিট করি, যাতে সেই ক্লাসটি নন-এক্সটেনডেবল হয়।

ফাইনাল ক্লাসের উদাহরণ

class final_abc; // ক্লাস যা ফাইনাল বানানো হবে
class abc {
    private:
    abc(){cout<<"abc constructor";}
    friend class final_abc;
};
class final_abc : virtual abc // এটিকে ফাইনাল ক্লাস বানানো হলো
{
    public:
    final_abc(){cout<<"Final class constructor";}
};
class derive : public final_abc; // Error: এক্সটেন্ড করা যাবে না

সিনট্যাক্স

template <class T> is_final;

প্যারামিটারস

টেমপ্লেটটি শুধুমাত্র টাইপ T এর প্যারামিটার নিতে পারে, এবং চেক করে যে দেওয়া টাইপটি একটি ফাইনাল ক্লাস টাইপ কিনা।

রিটার্ন ভ্যালু

এটি একটি বুলিয়ান মান রিটার্ন করে, দেওয়া টাইপটি ফাইনাল ক্লাস হলে true, এবং না হলে false।

উদাহরণ

Input: class final_abc; class abc { friend class final_abc; }; class final_abc : virtual abc{ }; is_final<abc>::value; Output: False
Input: class final_abc; class abc { friend class final_abc; }; class final_abc : virtual abc{ }; is_final<final_abc>::value; Output: True

উদাহরণ

#include <iostream>
#include <type_traits>
using namespace std;

class TP {
    // Same if it will be a structure instead of a class
};
class T_P final {
    // Same if it will be a structure instead of a class
};

int main() {
    cout << boolalpha;
    cout << "Using is_final";
    cout << "\nTutorials Point: " << is_final<TP>::value;
    cout << "\nT_P Final: " << is_final<T_P>::value;
    cout << "\ncheck for char: " << is_final<int>::value;
    return 0;
}

আউটপুট

Using is_final
Tutorials Point: false
T_P Final: true
check for char: false

উদাহরণ

#include <iostream>
#include <type_traits>
using namespace std;

union TP {
    // Union
};
union T_P final {
    // Union
};

int main() {
    cout << boolalpha;
    cout << "Using is_final";
    cout << "\nTutorials Point: " << is_final<TP>::value;
    cout << "\nT_P Final: " << is_final<T_P>::value;
    cout << "\ncheck for char: " << is_final<int>::value;
    return 0;
}

আউটপুট

Using is_final
Tutorials Point: false
T_P Final: true
check for char: false
  1. C++-এ String at() মেথড ব্যবহার

  2. C++-এ ফাইনাল ক্লাস সিমুলেট করা (জাভার final class-এর মত)

  3. C++-এ স্ট্রাকচার vs ক্লাস (Structure vs class in C++)

  4. C++-এ লোকাল ক্লাস