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+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告