Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memulakan Pembolehubah Statik dengan betul dalam Kelas C?

Bagaimana untuk Memulakan Pembolehubah Statik dengan betul dalam Kelas C?

DDD
DDDasal
2024-12-05 13:12:11940semak imbas

How to Properly Initialize Static Variables in C   Classes?

Memulakan Pembolehubah Statik dalam Kelas C

Dalam pengaturcaraan berorientasikan objek, selalunya perlu untuk memulakan pembolehubah statik dalam kelas. Walau bagaimanapun, amalan ini boleh menimbulkan cabaran, seperti yang ditunjukkan oleh soalan berikut:

Dilema:
Seorang pembangun telah mengenal pasti beberapa fungsi dalam kelas mereka yang tidak memerlukan akses objek dan oleh itu mempunyai telah ditandakan sebagai statik. Walau bagaimanapun, pengkompil menuntut semua pembolehubah yang diakses juga diisytiharkan statik. Pembangun kemudiannya mengisytiharkan pembolehubah ini sebagai pembolehubah statik dalam kelas tetapi menghadapi ralat kompilasi.

Penyelesaian:
Untuk memulakan pembolehubah statik dalam kelas, seseorang harus mentakrifkannya dalam pengisytiharan kelas tetapi mulakannya dalam fail sumber yang berasingan. Ini ditunjukkan di bawah:

// Class Header
class Thing {
public:
    static string RE_ANY;
    static string RE_ANY_RELUCTANT;
};

// Source File
string Thing::RE_ANY = "([^\n]*)";
string Thing::RE_ANY_RELUCTANT = "([^\n]*?)";

Pertimbangan Alternatif:
Adalah penting untuk ambil perhatian bahawa menjadikan fungsi statik bermakna ia tidak lagi dikaitkan dengan objek dan tidak boleh mengakses ahli bukan statik . Sebaliknya, pertimbangkan untuk menandakan mereka sebagai const, yang menghalang mereka daripada mengubah suai ahli tetapi membenarkan akses kepada mereka.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Pembolehubah Statik dengan betul dalam Kelas C?. 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