Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนอ็อบเจ็กต์โดยใช้ฟังก์ชันสมาชิกแบบคงที่ใน C++ Program


เป้าหมายที่นี่คือการนับจำนวนอ็อบเจ็กต์ของคลาสที่สร้างขึ้นโดยใช้ฟังก์ชันสมาชิกแบบคงที่

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