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;
}
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP