Ayrılmış bir ayırma kullanarak shared_ptr oluştururken, C++ 14 ctor'da açık bir silme işlevi sağlanmalı ve üye işlevi sıfırlanmalıdır. C++ 17, Dizi özelliği Shared_ptr destekleyerekC++ 17, dizinin shared_ptr öğesini desteklediğinden, bu, T [] için açık bir delicinin artık hem ctor'da gerekmediği anlamına gelir ve sıfırlanır?
using std::string;
using std::shared_ptr;
using std::default_delete;
int arr_size{};
...
auto string_arr_sptr_cpp14 =
shared_ptr<string[]>(new string[arr_size], default_delete<string[]>());
string_arr_sptr_cpp14.reset(new string[arr_size], default_delete<string[]>());
// define an explicit deleter,
// or otherwise, "delete ptr;" will internally be used incorrectly!
bu artık hem ctor gerekli ve yeniden belirlenen?
auto string_arr_sptr_cpp17 = shared_ptr<string[]>(new string[arr_size]);
string_arr_sptr_cpp14.reset(new string[arr_size]);
// deduced delete function calls "delete[] ptr;" correctly now?
bu std :: default_delete önemli rol <>() da gitti anlamına mı geliyor? – sandthorn
'std :: default_delete <>()', farklı bir konu olan 'unique_ptr <>' ile ilgilidir. – Frank