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; }
广告