Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memulakan Pembolehubah Rentetan Statik dengan betul dalam Kelas C?

Bagaimanakah Saya Boleh Memulakan Pembolehubah Rentetan Statik dengan betul dalam Kelas C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-05 01:51:08556semak imbas

How Can I Correctly Initialize Static String Variables in a C   Class?

Memulakan Pembolehubah Rentetan Statik dalam Kelas C: A Runtime Error Conundrum

Apabila mengisytiharkan fungsi sebagai statik dalam kelas C, ia adalah penting untuk mempertimbangkan kesan pada akses berubah, kerana pengkompil memberi mandat bahawa mana-mana pembolehubah yang digunakan oleh fungsi statik juga mesti statik. Walau bagaimanapun, ini menimbulkan cabaran untuk pembolehubah bukan bersepadu yang dimulakan sebagai rentetan const, kerana memulakannya dalam definisi kelas membawa kepada ralat kompilasi.

Secara khusus, memberikan nilai rentetan kepada pembolehubah const statik dalam definisi kelas mencetuskan masa jalan ralat, seperti yang ditunjukkan oleh kelas berikut:

class MyClass {
public:
    static const string message = "Hello World!";
};

Kod ini akan gagal untuk disusun bersama ralat mesej: "Hanya pembolehubah kamiran pemalar statik boleh dimulakan dalam kelas."

Untuk memintas isu ini, pembolehubah rentetan statik boleh ditakrifkan dalam kelas tetapi dimulakan di luar kelas itu, dalam fail sumber. Pendekatan ini memisahkan peringkat pengisytiharan dan permulaan, membenarkan pembolehubah dimulakan selepas definisi kelas.

// Within the class:
class MyClass {
public:
    static const string message;
};

// Within a source file:
const string MyClass::message = "Hello World!";

Sebagai alternatif, seperti yang dibayangkan oleh soalan asal, adalah penting untuk memahami perbezaan antara statik dan const. Menjadikan fungsi statik bermakna ia tidak dikaitkan dengan objek dan tidak boleh mengakses ahli bukan statik. Menjadikan data statik bermakna ia dikongsi antara semua objek kelas. Ini mungkin tidak sejajar dengan kefungsian yang dimaksudkan.

Sebaliknya, mengisytiharkan pembolehubah sebagai const semata-mata mengehadkan kebolehubahsuaiannya sambil masih membenarkan akses kepada ahli bukan statik. Perbezaan ini penting untuk mengekalkan tingkah laku berorientasikan objek yang diingini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memulakan Pembolehubah Rentetan 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