Jika memori yang Anda alokasikan adalah kelas dengan konstruktor yang melakukan sesuatu yang bermanfaat, operator yang baru akan memanggil konstruktor itu dan membiarkan objek Anda diinisialisasi.
Tetapi jika Anda mengalokasikan POD atau sesuatu yang tidak memiliki konstruktor yang menginisialisasi keadaan objek, maka Anda tidak dapat mengalokasikan memori dan menginisialisasi memori itu dengan operator yang baru dalam satu operasi. Namun, Anda memiliki beberapa opsi:
1) Gunakan variabel tumpukan sebagai gantinya. Anda dapat mengalokasikan dan menginisialisasi default dalam satu langkah, seperti ini:
int vals[100] = {0}; // first element is a matter of style
2) gunakan memset()
. Perhatikan bahwa jika objek yang Anda alokasikan bukan POD alokasikan , memsetting itu adalah ide yang buruk. Salah satu contoh spesifik adalah jika Anda memset kelas yang memiliki fungsi virtual, Anda akan menerbangkan vtable dan meninggalkan objek Anda dalam keadaan tidak dapat digunakan.
3) Banyak sistem operasi memiliki panggilan yang melakukan apa yang Anda inginkan - mengalokasikan pada tumpukan dan menginisialisasi data untuk sesuatu. Contoh Windows akan menjadiVirtualAlloc()
4) Ini biasanya merupakan pilihan terbaik. Hindari mengatur memori sendiri. Anda dapat menggunakan wadah STL untuk melakukan apa saja yang Anda lakukan dengan memori mentah, termasuk mengalokasikan dan menginisialisasi semua dalam satu gerakan:
std::vector<int> myInts(100, 0); // creates a vector of 100 ints, all set to zero