Rumah >pembangunan bahagian belakang >C++ >Ralat C++: Ahli data bukan statik mesti dimulakan, bagaimana untuk mengubah suainya?
Dalam pengaturcaraan C++, apabila kita mentakrifkan ahli data bukan statik kelas, jika mereka tidak dimulakan dalam senarai pembina atau permulaan, ralat berikut akan berlaku: ahli data bukan statik mesti dimulakan, ini Ini akan menyebabkan pengkompil tidak dapat memperuntukkan ruang memori untuk ahli dan dengan itu gagal membuat instantiate kelas.
Untuk menyelesaikan masalah ini, kita boleh mengambil langkah berikut:
1 Mulakan pembolehubah ahli dalam pembina
Jika kita tidak memulakan pembolehubah ahli semasa mentakrifkan kelas, kita boleh memulakannya dalam pembina, dan ini. pendekatan lebih fleksibel dalam beberapa kes. Contohnya:
class Person{ public: Person() { age = 18; name = "Tom"; } private: int age; string name; };
Dalam kod di atas, kami tidak memulakan pembolehubah umur dan nama ahli semasa mentakrifkan kelas Orang, tetapi memulakannya dalam pembina. Perlu diingatkan bahawa jika terdapat berbilang pembina dalam kelas, semua pembina perlu memulakan pembolehubah ahli.
2. Mulakan dalam senarai permulaan ahli
Dalam C++, senarai permulaan ahli ialah kaedah yang digunakan untuk memulakan pembolehubah ahli bukan statik kelas. Pembolehubah ahli bukan statik dalam kelas boleh dimulakan dengan cepat dan jelas dengan menambah titik bertindih selepas nama pembina dan menetapkan pembolehubah ahli dan ungkapan permulaannya dalam senarai permulaan ahli selepas pembina. Contohnya:
class Person{ public: Person(): age(18), name("Tom"){} private: int age; string name; };
Dalam kod di atas, kami menggunakan senarai permulaan ahli untuk memulakan pembolehubah umur dan namakan ahli.
Perlu diingatkan bahawa jika jenis pembolehubah ahli adalah jenis yang ditentukan pengguna, anda perlu memastikan bahawa jenis tersebut mempunyai pembina lalai. Jika tidak, pengkompil tidak akan dapat mencari pembina yang sesuai apabila memulakan menggunakan senarai permulaan ahli.
Ringkasan
C++ menghendaki ahli data bukan statik kelas mesti dimulakan semasa mentakrifkannya, jika tidak akan terdapat ralat bahawa ahli data bukan statik mesti dimulakan. Untuk menyelesaikan masalah ini, kita boleh memulakan pembolehubah ahli dalam pembina atau menggunakan senarai permulaan ahli untuk memulakannya. Sama ada cara, pastikan semua pembolehubah ahli dimulakan.
Atas ialah kandungan terperinci Ralat C++: Ahli data bukan statik mesti dimulakan, bagaimana untuk mengubah suainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!