Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Static Data Members ใน C++

Static Data Members เป็นสมาชิกคลาสที่ประกาศด้วย static มีเพียง 1 ตัวต่อคลาส (Shared ทุก Object) เริ่มต้นเป็น 0 เมื่อสร้าง Object แรก

รูปแบบ

static data_type member_name;

ตัวอย่างโค้ดสมบูรณ์

#include <iostream>
#include <string>
using namespace std;

class Student {
    int rollNo;
    string name;
    int marks;
public:
    static int objectCount;  // Declaration
    
    Student() { objectCount++; }
    
    void getdata() {
        cout << "Enter roll number: "; cin >> rollNo;
        cout << "Enter name: "; cin >> name;
        cout << "Enter marks: "; cin >> marks;
    }
    
    void putdata() {
        cout << "Roll: " << rollNo << ", Name: " << name 
             << ", Marks: " << marks << endl;
    }
};

int Student::objectCount = 0;  // Definition (จำเป็น!)

int main() {
    Student s1, s2, s3;
    s1.getdata(); s1.putdata();
    s2.getdata(); s2.putdata();
    s3.getdata(); s3.putdata();
    cout << "Total objects: " << Student::objectCount << endl;
    return 0;
}

ผลลัพธ์ตัวอย่าง

Enter roll number: 1
Enter name: Mark
Enter marks: 78
Roll: 1, Name: Mark, Marks: 78
...
Total objects: 3

จุดสำคัญ

  • Declaration ใน Class Definition: static int objectCount;
  • Definition นอก Class (ใน Global Scope): int Student::objectCount = 0;
  • เข้าถึงได้ผ่าน ClassName::member หรือ object.member
  • ไม่ต้องสร้าง Object ก็เข้าถึงได้ (ถ้า Public)

Use Cases

  • นับจำนวน Object (Instance Counter)
  • Shared Configuration/Settings
  • Factory Pattern (Registry)
  • Singleton Pattern