C++中的靜態資料成員


靜態資料成員是使用`static`關鍵字宣告的類成員。即使存在許多類物件,類中也只有一個靜態資料成員的副本。這是因為所有物件共享靜態資料成員。當建立第一個類物件時,靜態資料成員始終初始化為零。

靜態資料成員的語法如下:

static data_type data_member_name;

在上述語法中,使用了`static`關鍵字。`data_type`是C++資料型別,例如`int`、`float`等。`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

在上述程式中,`student`類具有三個資料成員,分別表示學生的學號、姓名和分數。`objectCount`資料成員是一個靜態資料成員,它包含已建立的`Student`類物件的個數。`Student()`是一個建構函式,每次建立一個新的類物件時都會遞增`objectCount`。

類中有兩個成員函式。`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;
}

更新於:2020年6月25日

23K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.