Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Mentakrifkan Ahli Kelas Integer Statik dengan Betul dalam C?

Bagaimanakah Saya Mentakrifkan Ahli Kelas Integer Statik dengan Betul dalam C?

Barbara Streisand
Barbara Streisandasal
2024-12-01 08:29:11556semak imbas

How Do I Properly Define Static Const Integer Class Members in C  ?

Mentakrifkan Ahli Integer Konst Statik dalam Definisi Kelas: Penerokaan

C membenarkan pengisytiharan ahli integer const statik dalam definisi kelas. Walau bagaimanapun, adalah penting untuk memahami perbezaan antara permulaan dan definisi dalam konteks ini.

Dalam kod contoh yang disediakan:

class test
{
public:
    static const int N = 10;
};

Pengisytiharan N dalam kelas memulakannya dengan nilai 10. Walau bagaimanapun, ini tidak bersamaan dengan definisi. Untuk menyelesaikan ralat pemaut yang dihadapi, definisi N yang berasingan diperlukan di luar definisi kelas. Ini boleh dicapai melalui definisi skop ruang nama, seperti:

const int test::N = 10;

Secara bergantian, kata kunci constexpr boleh digunakan untuk kedua-dua mengisytiharkan dan mentakrifkan ahli integer const statik dalam satu langkah, menghapuskan keperluan untuk yang berasingan definisi:

class test
{
public:
    static constexpr int N = 10;
};

Dalam kes di mana std::min dipanggil, ia menjangkakan parameter yang diluluskan melalui rujukan. Oleh kerana N diisytiharkan sebagai integer const statik, ia perlu ditakrifkan untuk lulus keperluan rujukan. Mengulas panggilan ke std::min membenarkan kod untuk disusun kerana takrifan N tidak lagi diperlukan, walaupun ia masih dirujuk.

Ringkasnya, manakala C membenarkan pengamulaan ahli integer const statik dalam definisi kelas, definisi berasingan diperlukan untuk merujuk nilai. Ini boleh dicapai melalui definisi skop ruang nama atau dengan menggunakan kata kunci constexpr.

Atas ialah kandungan terperinci Bagaimanakah Saya Mentakrifkan Ahli Kelas Integer Statik dengan Betul dalam 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