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