เป้าหมายที่นี่คือการนับจำนวนอ็อบเจ็กต์ของคลาสที่สร้างขึ้นโดยใช้ฟังก์ชันสมาชิกแบบคงที่
สมาชิกข้อมูลสแตติกจะถูกใช้ร่วมกันโดยอ็อบเจ็กต์ทั้งหมดของคลาสโดยทั่วไป หากไม่มีการระบุค่า สมาชิกข้อมูลสแตติกจะเริ่มต้นด้วย 0 เสมอ
ฟังก์ชันสมาชิกสแตติกใช้ได้เฉพาะสมาชิกข้อมูลสแตติกของคลาสนั้นเท่านั้น
เรากำลังใช้ class Student ที่นี่ เราจะประกาศจำนวนสมาชิกข้อมูลคงที่ซึ่งจะเก็บจำนวนวัตถุ ฟังก์ชันสมาชิกแบบคงที่ rollCall(void) ซึ่งจะแสดงจำนวนวัตถุเป็นหมายเลขม้วนของนักเรียนในชั้นเรียน
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราประกาศคลาส Student ซึ่งมีสมาชิกข้อมูลสาธารณะอยู่ใน rollno และจำนวนสมาชิกข้อมูลคงที่
-
มีตัวสร้างที่เรียก rollcall() และเริ่มต้น rollno ด้วยการนับ
-
มีตัวทำลายที่ลดการนับ
-
ฟังก์ชันสมาชิกแบบคงที่ rollcall() แสดงจำนวนวัตถุเป็นจำนวนนักเรียนและเพิ่มจำนวนขึ้น
-
ทุกครั้งที่วัตถุของนักเรียนถูกสร้างขึ้น คอนสตรัคเตอร์เรียก rollcall() และนับจะเพิ่มขึ้น การนับนี้ถูกกำหนดให้เป็นโรลโนของออบเจกต์ Student
-
ใน main เราได้สร้าง 4 object ของ class Student เป็น stu1,stu2,stu3,stu4 และตรวจสอบว่า count และ rollno เหมือนกับ no ของวัตถุ
ตัวอย่าง
// C++ program to Count the number of objects
// using the Static member function
#include <iostream>
using namespace std;
class Student {
public:
int rollno;
static int count;
public:
Student(){
rollCall();
rollno=count;
}
~Student()
{ --count; }
static void rollCall(void){
cout <<endl<<"Student Count:" << ++count<< "\n"; //object count
}
};
int Student::count;
int main(){
Student stu1;
cout<<"Student 1: Roll No:"<<stu1.rollno;
Student stu2;
cout<<"Student 2: Roll No:"<<stu2.rollno;
Student stu3;
cout<<"Student 3: Roll No:"<<stu3.rollno;
Student stu4;
cout<<"Student 4: Roll No:"<<stu4.rollno;
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Student Count:1 Student 1: Roll No:1 Student Count:2 Student 2: Roll No:2 Student Count:3 Student 3: Roll No:3 Student Count:4 Student 4: Roll No:4