Ayırdığınız bellek, yararlı bir şey yapan bir kurucuya sahip bir sınıfsa, yeni işleç bu kurucuyu çağırır ve nesnenizi başlatılmış olarak bırakır.
Ancak , nesnenin durumunu başlatan bir yapıcıya sahip olmayan bir POD veya bir şey ayırıyorsanız , bellek ayıramaz ve bu belleği bir işlemde yeni operatörle başlatamazsınız. Ancak, birkaç seçeneğiniz vardır:
1) Bunun yerine bir yığın değişkeni kullanın. Tek bir adımda aşağıdaki gibi tahsis edebilir ve varsayılan olarak başlatabilirsiniz :
int vals[100] = {0}; // first element is a matter of style
2) kullanın memset()
. Tahsis ettiğiniz nesne bir POD değilse, , taklit etmenin kötü bir fikir olduğunu unutmayın. Bunun özel bir örneği, sanal işlevleri olan bir sınıfı takarsanız, vtable'ı uçuracak ve nesnenizi kullanılamaz bir durumda bırakacaksınız.
3) Birçok işletim sistemi, istediğinizi yapan çağrılara sahiptir - bir yığına ayırın ve verileri bir şeye başlatın. Windows örneğiVirtualAlloc()
4) Bu genellikle en iyi seçenektir. Belleği kendiniz yönetmek zorunda kalmayın. Ham bellekle yapacağınız hemen hemen her şeyi yapmak için STL kaplarını kullanabilirsiniz, hepsi bir arada bırakma ve başlatma dahil olmak üzere:
std::vector<int> myInts(100, 0); // creates a vector of 100 ints, all set to zero