Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Anda Boleh Memulakan Ahli Data Statik dalam C Tanpa Pembina Statik?

Bagaimanakah Anda Boleh Memulakan Ahli Data Statik dalam C Tanpa Pembina Statik?

Linda Hamilton
Linda Hamiltonasal
2024-11-09 01:17:02669semak imbas

How Can You Initialize Static Data Members in C   Without a Static Constructor?

Pembina Statik dalam C : Memulakan Ahli Data Statik

Ahli data statik ialah pembolehubah yang diisytiharkan dalam kelas yang dikongsi antara semua kejadian itu kelas. Dalam bahasa seperti Java dan C#, adalah mungkin untuk menggunakan pembina statik untuk memulakan ahli ini sebelum sebarang kejadian dibuat. Walau bagaimanapun, C tidak mempunyai pembina statik yang ditetapkan.

Untuk mencapai kefungsian yang serupa dalam C , pendekatan alternatif ialah mencipta kelas berasingan untuk data statik. Begini cara ia berfungsi:

class StaticStuff {
  // Read-only vector of characters
  std::vector<char> letters_;

public:
  StaticStuff() {
    for (char c = 'a'; c <= 'z'; c++) {
      letters_.push_back(c);
    }
  }

  // Getter method to access letters_
  const std::vector<char>& getLetters() const { return letters_; }
};

class Elsewhere {
  static StaticStuff staticStuff_; // Initialize once
};

Dalam contoh ini, StaticStuff memegang huruf ahli data statik_. Apabila program bermula, pembina untuk StaticStuff akan dijalankan sekali, secara automatik memulakan huruf_ dengan aksara yang betul. Kemudian, instance of Elsewhere boleh mengakses letters_ melalui instance statik StaticStuff tanpa perlu memulakannya secara eksplisit.

Kaedah ini menyediakan cara yang bersih dan cekap untuk memulakan ahli data statik dalam C tanpa menggunakan penggodaman yang jelek atau semakan yang tidak perlu dalam contoh pembina.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Memulakan Ahli Data Statik dalam C Tanpa Pembina Statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn