Dalam C , pembina digunakan untuk memulakan objek kelas. Walau bagaimanapun, dalam coretan kod yang disediakan, pembina tidak digunakan, mengakibatkan tingkah laku yang tidak dijangka.
Baris bermasalah:
Class object();
sebenarnya tidak panggil pembina untuk kelas Kelas. Sebaliknya, ia mengisytiharkan fungsi mengembalikan objek Kelas. Untuk memanggil pembina dengan betul dan mencipta objek, koma bertitik (;) mesti dilampirkan pada baris:
Class object;
Sorotan coretan kod awal isu yang dikenali sebagai "penghuraian paling menjengkelkan" dalam C . Apabila menemui baris:
Class object();
penghuraikan C secara samar-samar mentafsirkannya sebagai sama ada pengisytiharan fungsi atau panggilan fungsi dengan senarai argumen kosong. Kekaburan ini selalunya membawa kepada kekeliruan dan hasil yang tidak dijangka.
Untuk memanggil pembina dan mencipta objek, kod itu hendaklah dikemas kini kepada:
#include <iostream> using namespace std; class Class { Class() { cout << "default constructor called"; } ~Class() { cout << "destructor called"; } }; int main() { Class object; // Correctly invokes the constructor }
Jalankan kod yang diperbetulkan untuk melihat output yang dijangkakan:
default constructor called destructor called
Atas ialah kandungan terperinci Mengapa `Class object();` Tidak Mencipta Objek C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!