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