Perbezaan Instansiasi: baharu lwn. Bukan baharu
Soalan ini meneroka perbezaan fungsi antara menginstant objek menggunakan operator baharu dan menginstantnya tanpa baharu.
Bukan baharu Instantiation
Time t(12, 0, 0); // t is a Time object
Instasiasi ini mencipta objek Masa bernama t yang berada pada tindanan (dalam kebanyakan pelaksanaan). Ia mengekalkan kewujudannya dalam skop semasa.
Semerta baharu
Time *t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
Semerta ini memperuntukkan memori secara dinamik menggunakan operator new(), dan kemudian memanggil pembina Time( ). Alamat blok memori yang diperuntukkan disimpan dalam t. Objek Masa berada pada timbunan (biasanya). Kemudian dalam atur cara, t mesti dipadamkan untuk melepaskan memori yang diperuntukkan dan mengelakkan kebocoran memori.
Perbezaan Fungsian
Selain perbezaan yang jelas dalam pengurusan memori, tiada perbezaan fungsi yang ketara antara kedua-dua instantiasi. Kedua-dua kaedah mencipta kejadian kelas Masa dengan parameter yang ditentukan.
N.B.
Istilah "timbunan" dan "timbunan" biasanya digunakan untuk menunjukkan lokasi storan bagi objek yang diperuntukkan tindanan dan diperuntukkan timbunan, masing-masing. Walau bagaimanapun, piawaian C tidak mengenakan perbezaan ini berdasarkan lokasi memori. Sebaliknya, ia mengkategorikan objek berdasarkan tempoh storannya, yang mungkin sejajar atau tidak dengan konsep timbunan dan timbunan konvensional.
Atas ialah kandungan terperinci Instalasi Baharu lwn. Bukan Baharu dalam C : Apakah Perbezaan Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!