Rumah >pembangunan bahagian belakang >C++ >C Instantiation Objek: Tindanan lwn. Timbunan: `baru` atau Bukan `baru`?
Membuat Objek: Dengan atau Tanpa Baharu
Apabila mencipta objek dalam C , pengaturcara boleh menggunakan sama ada pengendali "baru" atau membuat instantiatnya secara langsung tanpanya. Walaupun kedua-dua pendekatan mencipta objek, ia berbeza dalam beberapa aspek utama.
Tanpa Baharu
Menginstantiasikan objek tanpa "baharu" secara langsung menyimpan memori untuknya dalam skop semasa. Ini biasanya dilakukan pada timbunan dan menghasilkan objek dengan jangka hayat automatik. Objek dicipta dan dimusnahkan secara automatik dalam skop yang ditakrifkan.
Contohnya:
Time t(12, 0, 0); // t is a Time object
Dalam kod di atas, objek "Masa" "t" dicipta pada tindanan dan hayatnya terikat pada skop semasa.
Dengan Baharu
Menggunakan "baru" untuk membuat seketika objek memperuntukkan memori untuknya secara dinamik pada timbunan. Ini membolehkan objek dicipta dan dimusnahkan secara eksplisit apabila jangka hayatnya tamat. Penunjuk "t" menyimpan alamat timbunan objek.
Contohnya:
Time* t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
Di sini, penuding "t" diberikan alamat timbunan "Masa" yang baru dibuat objek. Hayat objek adalah bebas daripada skop dan berterusan sehingga operator "padam" digunakan untuk membebaskan memorinya.
Perbezaan Utama
Adalah penting untuk ambil perhatian bahawa perbezaan ini adalah khusus pelaksanaan, kerana standard C tidak mentakrifkan tindanan dengan jelas dan tingkah laku timbunan. Walau bagaimanapun, dalam kebanyakan pelaksanaan praktikal, memori tindanan digunakan untuk objek automatik dan memori timbunan digunakan untuk objek dinamik.
Atas ialah kandungan terperinci C Instantiation Objek: Tindanan lwn. Timbunan: `baru` atau Bukan `baru`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!