Bakalım, vücut yapıcım içinde bazı denetimler yapmak için nesnemin bir dış işlevini çağırmak istiyorum. Bir cismin ömrü, yapıcının gövdesi çalışmayı bitirdiğinde başlar, bu güvenli olmayan bir tasarım mıdır?C++: bir nesnenin ve harici işlevlerin ömür süresi
struct A;
void check(A const&) { /* */ }
struct A
{
A() { check(*this); }
};
Yani henüz canlı olmayan bir nesneyle çağıran ve dış işlev yapıyorum. Tanımlanmamış davranış mı?
İlgili sorular: Bu işlev işlevini bir üye işlev olarak (statik değil) koyarsam, standardın yapıcı dışındaki henüz canlı olmayan nesneleri kullanma hakkında ne yazıyor?
Bir sınıfın bakış açısı ile kullanıcıları arasındaki bir ömür boyu kavramında herhangi bir farklılık var mı (sınıf-dışı sınıf dışı yaşam süreleri)?
[C++ SSS] (https://isocpp.org/wiki/faq/ctors#using-this-in-ctors) bunun hakkında bilgi sahibidir. –
Bu işlev, üye sanal değil ve başlangıç listesinde yok – KABoissonneault
A const & bir referanstır ve işlevlerin sonunda ne çek başlangıcında ne de ne yok olduğu sürece iyi olmalıdır. Yapıcının içinde ayrıca nesne tamamen inşa edilmiştir. Bu kodda herhangi bir sorun görmüyorum – Brahim