สมาชิกข้อมูลสแตติกคือสมาชิกของคลาสที่ประกาศโดยใช้คีย์เวิร์ดคงที่ มีสมาชิกข้อมูลสแตติกในคลาสเพียงสำเนาเดียว แม้ว่าจะมีอ็อบเจ็กต์คลาสจำนวนมากก็ตาม ทั้งนี้เนื่องจากอ็อบเจ็กต์ทั้งหมดใช้สมาชิกข้อมูลแบบคงที่ร่วมกัน สมาชิกข้อมูลแบบคงที่เริ่มต้นเป็นศูนย์เสมอเมื่อสร้างวัตถุชั้นหนึ่ง
ไวยากรณ์ของสมาชิกข้อมูลคงที่จะได้รับดังนี้ −
static data_type data_member_name;
ในไวยากรณ์ข้างต้น ใช้คำหลักแบบคงที่ data_type คือชนิดข้อมูล C++ เช่น int, float เป็นต้น data_member_name คือชื่อที่กำหนดให้สมาชิกของ data.
โปรแกรมที่แสดงสมาชิกข้อมูลคงที่ใน 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
ในโปรแกรมข้างต้น นักเรียนในชั้นเรียนมีสมาชิกข้อมูลสามคนซึ่งแสดงถึงหมายเลขม้วนของนักเรียน ชื่อและเครื่องหมาย สมาชิกข้อมูล objectCount เป็นสมาชิกข้อมูลคงที่ที่มีจำนวนของอ็อบเจ็กต์ที่สร้างจากคลาส Student Student() เป็นคอนสตรัคเตอร์ที่เพิ่ม objectCount ทุกครั้งที่มีการสร้างอ็อบเจกต์คลาสใหม่
มี 2 ฟังก์ชันสมาชิกในชั้นเรียน ฟังก์ชัน 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;
}