Rumah > Artikel > pembangunan bahagian belakang > Ralat sintaks C++: Pembina yang ditakrifkan di luar kelas mesti ditambah dengan nama kelas sebagai kelayakan Bagaimana ia harus diperbetulkan?
C++ ialah bahasa pengaturcaraan berorientasikan objek yang digunakan secara meluas Apabila mentakrifkan pembina kelas dalam C++, jika anda ingin meletakkan definisi pembina di luar kelas, anda perlu menambah nama kelas pada definisi. pembina sebagai kelayakan untuk menentukan kelas mana pembina ini tergolong. Ini adalah peraturan asas sintaks C++. Jika anda tidak mematuhi peraturan ini semasa mentakrifkan pembina kelas, ralat kompilasi akan muncul, menggesa "Pembina yang ditakrifkan di luar kelas mesti ditambah dengan nama kelas sebagai kelayakan."
Jadi, jika anda menghadapi ralat kompilasi seperti ini, bagaimanakah anda harus membetulkannya? Cara yang mudah dan berkesan adalah dengan menambah nama kelas sebagai kelayakan apabila menentukan pembina kelas untuk memastikan bahawa pengkompil boleh mengendalikan kelas dengan betul kepunyaan fungsi itu.
Seterusnya, artikel ini akan memperincikan cara mentakrifkan pembina di luar kelas dan mengelakkan ralat sintaks.
Mula-mula, isytiharkan pembina dalam takrifan kelas. Apabila mengisytiharkan pembina, anda tidak perlu menulis badan fungsi, anda hanya perlu menulis nama fungsi dan parameter. Contohnya:
class Person { public: Person(int age); // 声明构造函数 private: int m_age; };
Kod ini mengisytiharkan kelas Orang, yang mengandungi pembina yang parameternya ialah umur jenis integer.
Seterusnya, takrifkan pembina di luar kelas. Perlu diingatkan bahawa apabila mentakrifkan pembina, anda mesti menambah nama kelas sebagai kelayakan untuk menentukan kelas mana yang dimiliki oleh fungsi ini. Contohnya:
Person::Person(int age) { // 类名作为限定符 m_age = age; }
Kod ini mentakrifkan pembina kelas Orang. Perlu diingatkan bahawa apabila mentakrifkan pembina, nama kelas mesti ditambah sebagai kelayakan. Jika kelayakan ditinggalkan, pengkompil akan menggesa mesej ralat: "Pembina yang ditakrifkan di luar kelas mesti layak dengan nama kelas."
Jika anda perlu mentakrifkan berbilang pembina di luar kelas, anda boleh menggunakan lebihan fungsi dan menambah senarai parameter formal yang berbeza sebelum setiap nama fungsi untuk membezakan antara Pembina yang berbeza. Contohnya:
Person::Person() { // 默认构造函数 m_age = 0; } Person::Person(int age) { // 带参构造函数 m_age = age; }
Kod ini mentakrifkan dua pembina, satu ialah pembina lalai dan satu lagi ialah pembina berparameter. Dengan menambahkan senarai parameter formal yang berbeza sebelum nama fungsi, pengkompil boleh membezakan dengan betul antara dua definisi pembina.
Perlu diambil perhatian bahawa takrifan pembina yang diisytiharkan dalam kelas ialah takrifan lalai Jika pengguna tidak mengisytiharkan atau mentakrifkannya di luar kelas, pengkompil akan menjana takrifan pembina lalai secara automatik parameter, pembinaannya Badan fungsi kosong untuk pembina dengan parameter, parameter akan dimulakan. Jika anda perlu mengisytiharkan dalam kelas dan mentakrifkan pembina di luar kelas, anda perlu mengosongkan definisi lalai yang diisytiharkan dalam kelas Contohnya, mengisytiharkan perkara berikut dalam kelas:
class Person { public: Person()=default; // 显示声明默认构造函数 Person(int age); private: int m_age; }
Tentukan pembina lalai di luar kelas:
.Person::Person() { // 默认构造函数 m_age = 0; }
dalam Dalam C++, pembina yang ditakrifkan di luar kelas mesti layak dengan nama kelas. Jika anda meninggalkan kelayakan nama kelas, pengkompil akan menggesa ralat sintaks. Untuk mengelakkan ralat ini, anda boleh mengisytiharkan pembina terlebih dahulu dalam definisi kelas, kemudian menentukan pembina di luar kelas, dan menambah nama kelas sebagai kelayakan sebelum nama fungsi. Jika anda perlu menentukan berbilang pembina, anda boleh menggunakan lebihan fungsi. Kuasai pengetahuan asas ini dan anda boleh menjadi lebih mahir dalam menggunakan bahasa C++ untuk menulis program.
Atas ialah kandungan terperinci Ralat sintaks C++: Pembina yang ditakrifkan di luar kelas mesti ditambah dengan nama kelas sebagai kelayakan Bagaimana ia harus diperbetulkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!