C++-এ আমরা কিছু ক্লাস ডেরাইভ (derive) করতে পারি। কখনও কখনও ডেরাইভড ক্লাসের কনস্ট্রাক্টর কল করার সময় সুপার ক্লাস (বেস ক্লাস) কনস্ট্রাক্টর কল করতে হয়। Java-এর মতো সুপার ক্লাসের জন্য কোনো রেফারেন্স ভেরিয়েবল নেই। যদি কনস্ট্রাক্টর নন-প্যারামিটারাইজড (non-parameterized) হয়, তবে ডেরাইভড ক্লাসের সাথে আটোমেটিক্যালি কল হবে, অন্যথায় ডেরাইভড ক্লাসের ইনিশিয়ালাইজার লিস্টে (initializer list) সুপার ক্লাস কনস্ট্রাক্টর রাখতে হয়।
এই উদাহরণে প্রথমে আর্গুমেন্ট-রহিত কনস্ট্রাক্টর দেখব।
উদাহরণ কোড (নন-প্যারামিটারাইজড কনস্ট্রাক্টর)
#include <iostream>
using namespace std;
class MyBaseClass {
public:
MyBaseClass() {
cout << "Constructor of base class" << endl;
}
};
class MyDerivedClass : public MyBaseClass {
public:
MyDerivedClass() {
cout << "Constructor of derived class" << endl;
}
};
int main() {
MyDerivedClass derived;
}
আউটপুট
Constructor of base class Constructor of derived class
এখন প্যারামিটারযুক্ত কনস্ট্রাক্টর দেখি।
উদাহরণ কোড (প্যারামিটারাইজড কনস্ট্রাক্টর)
#include <iostream>
using namespace std;
class MyBaseClass {
public:
MyBaseClass(int x) {
cout << "Constructor of base class: " << x << endl;
}
};
class MyDerivedClass : public MyBaseClass { // বেস কনস্ট্রাক্টর ইনিশিয়ালাইজার লিস্টে
public:
MyDerivedClass(int y) : MyBaseClass(50) {
cout << "Constructor of derived class: " << y << endl;
}
};
int main() {
MyDerivedClass derived(100);
}
আউটপুট
Constructor of base class: 50 Constructor of derived class: 100