สมาชิกข้อมูลสแตติกคือสมาชิกของคลาสที่ประกาศโดยใช้คีย์เวิร์ดคงที่ มีสมาชิกข้อมูลสแตติกในคลาสเพียงสำเนาเดียว แม้ว่าจะมีอ็อบเจ็กต์คลาสจำนวนมากก็ตาม ทั้งนี้เนื่องจากอ็อบเจ็กต์ทั้งหมดใช้สมาชิกข้อมูลแบบคงที่ร่วมกัน สมาชิกข้อมูลแบบคงที่เริ่มต้นเป็นศูนย์เสมอเมื่อสร้างวัตถุชั้นหนึ่ง
ไวยากรณ์ของสมาชิกข้อมูลคงที่จะได้รับดังนี้ −
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; }