জাভা বা সি# এ, আমরা চূড়ান্ত ক্লাস ব্যবহার করতে পারি। চূড়ান্ত ক্লাস হল বিশেষ ধরনের ক্লাস। আমরা অন্য ক্লাস তৈরি করার জন্য সেই শ্রেণীকে প্রসারিত করতে পারি না। C++ এ এমন কোনো সরাসরি উপায় নেই। এখানে আমরা দেখব কিভাবে C++ এ ফাইনাল ক্লাস সিমুলেট করা যায়।
এখানে আমরা MakeFinalClas নামে একটি অতিরিক্ত ক্লাস তৈরি করব (এর ডিফল্ট কনস্ট্রাক্টর ব্যক্তিগত)। এই ফাংশনটি আমাদের উদ্দেশ্য সমাধান করতে ব্যবহৃত হয়। মেইন ক্লাস মাইক্লাস মেকফাইনালক্লাসের কনস্ট্রাক্টরকে কল করতে পারে কারণ তারা বন্ধু ক্লাস।
একটি জিনিস আমাদের লক্ষ্য করতে হবে, মেকফাইনালক্লাসও একটি ভার্চুয়াল বেস ক্লাস। আমরা এটাকে ভার্চুয়াল বেস শ্রেণী বানাবো কারণ আমরা MakeFinalClass-এর কন্সট্রাক্টরকে MyDerivedClass-এর কনস্ট্রাক্টরের মাধ্যমে কল করতে চাই, MyClass নয় (ভার্চুয়াল বেস ক্লাসের কনস্ট্রাক্টরকে সেই শ্রেণী বলা হয় না যা থেকে উত্তরাধিকারসূত্রে পাওয়া যায়, কনস্ট্রাক্টরের পরিবর্তে কংক্রিট ক্লাসের কনস্ট্রাক্টর দ্বারা ডাকা হয়।
উদাহরণ
#include <iostream> using namespace std; class MyClass; class MakeFinalClass { private: MakeFinalClass() { cout << "This is constructor of the MakeFinalClass" << endl; } friend class MyClass; }; class MyClass : virtual MakeFinalClass { //this will be final class public: MyClass() { cout << "This is constructor of the final Class" << endl; } }; //try to make derived class class MyDerivedClass : MyClass { public: MyDerivedClass() { cout << "Constructor of the Derived Class" << endl; } }; main() { MyDerivedClass derived; }
আউটপুট
In constructor 'MyDerivedClass::MyDerivedClass()': [Error] 'MakeFinalClass::MakeFinalClass()' is private
আমরা মাইক্লাসের অবজেক্টগুলি তৈরি করতে পারি কারণ এটি মেকফাইনালক্লাসের বন্ধু, এবং এর কনস্ট্রাক্টরগুলিতে অ্যাক্সেস রয়েছে৷
উদাহরণ
#include <iostream> using namespace std; class MyClass; class MakeFinalClass { private: MakeFinalClass() { cout << "This is constructor of the MakeFinalClass" << endl; } friend class MyClass; }; class MyClass : virtual MakeFinalClass { //this will be final class public: MyClass() { cout << "This is constructor of the final Class" << endl; } }; main() { MyClass obj; }
আউটপুট
This is constructor of the MakeFinalClass This is constructor of the final Class