Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Tidak Boleh Memulakan Ahli Statik Bukan Konst Di Dalam Kelas C?

Mengapa Saya Tidak Boleh Memulakan Ahli Statik Bukan Konst Di Dalam Kelas C?

Patricia Arquette
Lepaskan: 2024-12-12 16:19:11
asal
742 orang telah melayarinya

Why Can't I Initialize Non-Const Static Members Inside a C   Class?

Permulaan Dalam Kelas Ahli Statik dalam C

Dalam C , mentakrifkan pembolehubah ahli statik di dalam perisytiharan kelas adalah tidak dibenarkan. Tindakan ini mengakibatkan ralat penyusunan "ISO C melarang permulaan dalam kelas bagi ahli statik bukan const `j'".

Sebab Larangan:

  • Kecekapan Kod: Memulakan ahli statik dalam perisytiharan kelas boleh menyebabkan pendua takrifan apabila kelas disertakan dalam berbilang unit kompilasi.
  • Kawalan ke atas Permulaan: Ahli statik selalunya memerlukan logik pemulaan khusus, yang tidak boleh dijamin apabila mereka dimulakan sebaris dalam perisytiharan kelas.

Pengecualian untuk Const Ahli:

Ahli statik Const dibenarkan untuk dimulakan dalam pengisytiharan kelas kerana mereka tidak diubah suai selepas pemulaan. Ini memastikan kecekapan kod dan menghapuskan keperluan untuk pemulaan eksplisit.

Implikasi untuk Nilai Standard:

Dalam C, pembolehubah statik dimulakan secara automatik kepada 0 jika ia tidak dinyatakan secara eksplisit dimulakan. Walau bagaimanapun, dalam C , pembolehubah statik tidak dimulakan secara automatik. Anda mesti memulakannya secara manual sama ada dalam pengisytiharan kelas (untuk ahli const) atau dalam fail .cpp yang berasingan.

Penyelesaian:

Untuk menentukan statik bukan const pembolehubah ahli dalam C , anda harus memulakannya dalam fail .cpp yang berasingan dan bukannya dalam pengisytiharan kelas.

Untuk contoh:

// Header file
class Test {
 public:
  static int j;
};

// .cpp file
int Test::j = 0;
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memulakan Ahli Statik Bukan Konst Di Dalam Kelas C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan