C++11-এর আগে final কীওয়ার্ড না থাকায় ইনহেরিটেন্স বাধা দেওয়ার জন্য একটি টেকনিক ব্যবহার করা হতো। C++11 থেকে সরাসরি final কীওয়ার্ড উপলব্ধ।
পুরানো টেকনিক (Pre-C++11): ভার্চুয়াল বেস + প্রাইভেট কনস্ট্রাক্টর
class FinalClass; // ফরওয়ার্ড ডিক্লেরেশন
class MakeFinal {
private:
MakeFinal() {}
friend class FinalClass;
};
class FinalClass : virtual MakeFinal {
public:
FinalClass() {}
};
class Derived : public FinalClass { // কম্পাইল এরর
Derived() {}
};
C++11+ আধুনিক পদ্ধতি
class FinalClass final { // শুধু final লিখলেই হয়
public:
FinalClass() {}
};
// class Derived : public FinalClass { }; // Error: cannot derive from 'final' class
আউটপুট (পুরানো টেকনিকের এরর)
In constructor 'Derived::Derived()': [Error] 'MakeFinal::MakeFinal()' is private
সারসংক্ষেপ: C++11+ এ class Name final ব্যবহার করুন। পুরানো কোডবেসের জন্য ভার্চুয়াল বেস + প্রাইভেট কনস্ট্রাক্টর + ফ্রেন্ড টেকনিক কাজে লাগে।