Rumah >pembangunan bahagian belakang >C++ >Bolehkah Ahli Data Kelas Dimulakan Terus dalam C?
Dalam C , ahli data kelas tidak boleh dimulakan menggunakan sintaks pemulaan langsung, (), seperti yang dilihat dalam contoh berikut :
#include <iostream> class test { public: void fun() { int a(3); std::cout << a << '\n'; } private: int s(3); // Compiler error }; int main() { test t; t.fun(); return 0; }
Kompilasi gagal dengan ralat:
11 9 [Error] expected identifier before numeric constant 11 9 [Error] expected ',' or '...' before numeric constant
Mengapakah ini berlaku?
Piawaian C secara jelas melarang sintaks ini untuk permulaan ahli data kelas. Cadangan awal untuk pengenalan ciri menyebut masalah penghuraian sebagai sebab.
Pertimbangkan contoh samar-samar ini:
struct S { int i(x); // data member with initializer or... // ... static int x; int i(y); // member function declaration // ... typedef int y; };
Piawaian mencadangkan penyelesaian:
Untuk menghapuskan kekaburan, standard C membenarkan hanya sintaks berikut untuk data kelas permulaan ahli:
Penyelesaian ini memastikan kejelasan dan mengelakkan potensi salah faham dalam kes di mana pengisytiharan boleh menyerupai kedua-dua objek dan pengisytiharan fungsi.
Atas ialah kandungan terperinci Bolehkah Ahli Data Kelas Dimulakan Terus dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!