Instantiating Objects: 'baharu' lwn. Bukan 'baharu'
Selain daripada peruntukan memori, apakah perbezaan fungsi yang wujud antara baris berikut kod?
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
Bukan 'baharu' Instantiation
Baris pertama, Time t (12, 0, 0);, mencipta pembolehubah t jenis Masa dalam skop setempat. Pembolehubah ini biasanya diperuntukkan pada tindanan dan akan dimusnahkan pada penghujung skopnya.
Penyebaran 'baharu'
Sebaliknya, baris kedua, Masa* t = new Time(12, 0, 0);, memperuntukkan blok memori pada timbunan (biasanya) melalui ::operator new() atau Time::operator new() fungsi. Blok memori ini kemudiannya dimulakan menggunakan pembina Time::Time(), dengan alamat memori yang baru diperuntukkan ditetapkan sebagai penunjuk ini. Penunjuk kepada memori yang diperuntukkan disimpan dalam pembolehubah t.
Perbezaan Lain
Walaupun perbezaan utama terletak pada peruntukan memori, terdapat beberapa perbezaan halus yang lain:
Atas ialah kandungan terperinci Instalasi Objek `baru` lwn. Bukan `baru`: Apakah Perbezaan Fungsi Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!