স্ট্যাটিক ডেটা মেম্বার হলো ক্লাস মেম্বার যেগুলো static কীওয়ার্ড ব্যবহার করে ডিক্লেয়ার করা হয়। ক্লাসে শুধু একটি কপি থাকে স্ট্যাটিক ডেটা মেম্বারের, যদি ক্লাস অবজেক্ট অনেক থাকে। এর কারণ হলো সব অবজেক্ট স্ট্যাটিক ডেটা মেম্বার শেয়ার করে। প্রথম ক্লাস অবজেক্ট তৈরি হলে স্ট্যাটিক ডেটা মেম্বার সবসময় শূন্য দিয়ে ইনিশিয়ালাইজ হয়।
স্ট্যাটিক ডেটা মেম্বারের সিনট্যাক্স:
static data_type data_member_name;
উপরোক্ত সিনট্যাক্সে, static কীওয়ার্ড ব্যবহার করা হয়েছে। data_type হলো C++ ডেটা টাইপ যেমন int, float ইত্যাদি। data_member_name হলো ডেটা মেম্বারকে দেওয়া নাম।
C++-এ স্ট্যাটিক ডেটা মেম্বার ডেমোনস্ট্রেট করার প্রোগ্রাম:
উদাহরণ
#include <iostream>
#include <string.h>
using namespace std;
class Student {
private:
int rollNo;
char name[10];
int marks;
public:
static int objectCount;
Student() {
objectCount++;
}
void getdata() {
cout << "Enter roll number: " << endl;
cin >> rollNo;
cout << "Enter name: " << endl;
cin >> name;
cout << "Enter marks: " << endl;
cin >> marks;
}
void putdata() {
cout << "Roll Number = " << rollNo << endl;
cout << "Name = " << name << endl;
cout << "Marks = " << marks << endl;
cout << endl;
}
};
int Student::objectCount = 0;
int main(void) {
Student s1;
s1.getdata();
s1.putdata();
Student s2;
s2.getdata();
s2.putdata();
Student s3;
s3.getdata();
s3.putdata();
cout << "Total objects created = " << Student::objectCount << endl;
return 0;
}
আউটপুট
Enter roll number: 1 Enter name: Mark Enter marks: 78 Roll Number = 1 Name = Mark Marks = 78 Enter roll number: 2 Enter name: Nancy Enter marks: 55 Roll Number = 2 Name = Nancy Marks = 55 Enter roll number: 3 Enter name: Susan Enter marks: 90 Roll Number = 3 Name = Susan Marks = 90 Total objects created = 3
উপরোক্ত প্রোগ্রামে, Student ক্লাসে তিনটি ডেটা মেম্বার রয়েছে যা স্টুডেন্টের রোল নম্বর, নাম এবং মার্কস ডিনোট করে। objectCount ডেটা মেম্বারটি একটি স্ট্যাটিক ডেটা মেম্বার যেটি Student ক্লাসের অবজেক্ট সংখ্যা ধারণ করে। Student() হলো একটি কনস্ট্রাক্টর যা প্রতিবার নতুন ক্লাস অবজেক্ট তৈরি হলে objectCount ইনক্রিমেন্ট করে।
ক্লাসে ২টি মেম্বার ফাংশন রয়েছে। getdata() ফাংশন ইউজার থেকে ডেটা নেয় এবং putdata() ডেটা ডিসপ্লে করে। এর কোড স্নিপেট নিচে দেওয়া হলো:
class Student {
private:
int rollNo;
char name[10];
int marks;
public:
static int objectCount;
Student() {
objectCount++;
}
void getdata() {
cout << "Enter roll number: " << endl;
cin >> rollNo;
cout << "Enter name: " << endl;
cin >> name;
cout << "Enter marks: " << endl;
cin >> marks;
}
void putdata() {
cout << "Roll Number = " << rollNo << endl;
cout << "Name = " << name << endl;
cout << "Marks = " << marks << endl;
cout << endl;
}
};
main() ফাংশনে, Student ক্লাসের তিনটি অবজেক্ট রয়েছে: s1, s2 এবং s3। প্রতিটি অবজেক্টের জন্য getdata() এবং putdata() কল করা হয়েছে। সবশেষে, objectCount-এর ভ্যালু ডিসপ্লে করা হয়েছে। এটি নিচে দেওয়া হলো:
int main(void) {
Student s1;
s1.getdata();
s1.putdata();
Student s2;
s2.getdata();
s2.putdata();
Student s3;
s3.getdata();
s3.putdata();
cout << "Total objects created = " << Student::objectCount << endl;
return 0;
}