Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 정적 데이터 멤버


정적 데이터 멤버는 static 키워드를 사용하여 선언된 클래스 멤버입니다. 많은 클래스 개체가 있더라도 클래스에는 정적 데이터 멤버의 복사본이 하나만 있습니다. 이는 모든 개체가 정적 데이터 멤버를 공유하기 때문입니다. 정적 데이터 멤버는 첫 번째 클래스 개체가 생성될 때 항상 0으로 초기화됩니다.

정적 데이터 멤버의 구문은 다음과 같습니다. -

static data_type data_member_name;

위 구문에서는 static 키워드를 사용합니다. data_type은 int, float 등과 같은 C++ 데이터 유형입니다. data_member_name은 데이터 멤버에 제공되는 이름입니다.

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

위의 프로그램에서 반 학생은 학생 명부 번호, 이름 및 점수를 나타내는 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;
}