Rumah >pembangunan bahagian belakang >C++ >Permulaan Objek dalam C : Kata Kunci `baru` lwn. Permulaan Langsung?
Memahami Instalasi Objek: Dengan atau Tanpa 'baru'
Apabila mencipta objek dalam pengaturcaraan, dua pendekatan muncul: menggunakan 'baru' kata kunci atau instantiating tanpanya. Di sebalik peruntukan memori dinamik, persoalan penting timbul: adakah terdapat perbezaan fungsi antara kedua-dua kaedah ini?
Mari kita periksa coretan kod berikut:
Time t (12, 0, 0); // t is a Time object Time* t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
Dalam baris pertama, 't ' pembolehubah dibuat secara tempatan, biasanya pada timbunan. Ia memegang contoh objek 'Masa' yang dimusnahkan sebaik sahaja skopnya tamat.
Sebaliknya, baris kedua menggunakan operator 'baharu' untuk memperuntukkan memori secara dinamik dan memulakan objek 'Masa' dalam blok itu. Akibatnya, pembolehubah 't' menyimpan alamat memori yang diperuntukkan secara dinamik dan bukannya objek itu sendiri. Peruntukan dinamik ini berlaku pada timbunan secara lalai dan memerlukan penggunaan 'padam' untuk melepaskan memori yang diperuntukkan kemudian.
Oleh itu, perbezaan fungsi terletak pada skop dan jangka hayat objek yang dicipta. Dalam kes pertama, objek adalah setempat dan dimusnahkan pada penghujung skopnya, manakala dalam kes kedua, objek itu kekal wujud sehingga dipadamkan secara eksplisit.
Adalah penting untuk ambil perhatian bahawa penyetempatan pembolehubah pada tindanan dan objek dinamik pada timbunan adalah amalan pelaksanaan yang biasa. Walau bagaimanapun, piawaian C mentakrifkan objek ini semata-mata berdasarkan sepanjang hayatnya, bukan lokasi fizikalnya dalam ingatan.
Atas ialah kandungan terperinci Permulaan Objek dalam C : Kata Kunci `baru` lwn. Permulaan Langsung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!