Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memulakan Ahli Data Malar dengan betul dalam C?

Bagaimanakah Saya Boleh Memulakan Ahli Data Malar dengan betul dalam C?

Patricia Arquette
Lepaskan: 2024-12-10 01:15:10
asal
955 orang telah melayarinya

How Can I Properly Initialize Constant Data Members in C  ?

Permulaan Ahli Data Const: Panduan Komprehensif

Pengenalan:

Memahami permulaan ahli data tetap dalam C boleh membingungkan. Artikel ini bertujuan untuk menjelaskan aspek ini dengan menangani ralat biasa dan memberikan penjelasan terperinci tentang proses tersebut.

Ralat Ditemui:

Pertimbangkan coretan kod berikut:

#include <iostream>

using namespace std;

class T1 {
  const int t = 100;
  public:
  
  T1() {
    cout << "T1 constructor: " << t << endl;
  }
};
Salin selepas log masuk

Apabila cuba untuk memulakan const data ahli t dalam pembina kelas, perkara berikut ralat berlaku:

test.cpp:21: error: ISO C++ forbids initialization of member ‘t’
test.cpp:21: error: making ‘t’ static
Salin selepas log masuk

Memahami Ralat:

Ralat berpunca daripada sekatan bahasa C yang tidak membenarkan pengamulaan ahli data const dalam definisi kelas. Ini kerana pembolehubah const memerlukan definisi unik, yang tidak boleh dijamin apabila disertakan dalam berbilang unit terjemahan.

Cara Memulakan Ahli Data Const:

Untuk memulakan const ahli data, ia mesti ditakrifkan di luar definisi kelas. Ini boleh dicapai melalui senarai pemula kelas:

T1() : t(100) {}
Salin selepas log masuk

Dalam senarai pemula, t diberikan nilai 100 sebelum pemulaan kelas berlaku. Ini memastikan bahawa ahli data const dimulakan semasa penciptaan objek.

Kesimpulan:

Memulakan ahli data const memerlukan pematuhan kepada peraturan bahasa tertentu. Dengan mentakrifkannya di luar definisi kelas dan menggunakan senarai pemula, pengaturcara boleh memulakan ahli data const dengan berkesan dan mengelakkan ralat yang disebutkan di atas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memulakan Ahli Data Malar dengan betul dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan