varsayalım Ben:statik yıkıcı
void foo() {
static Bar bar;
}
c Bar :: Bar() çubuğunda denir bana garanti ++ mu, ve Çubuk :: ~ Bar() çubuğunda hiçbir zaman denir? (Ana çıkıştan sonraya kadar).
Teşekkürler!
varsayalım Ben:statik yıkıcı
void foo() {
static Bar bar;
}
c Bar :: Bar() çubuğunda denir bana garanti ++ mu, ve Çubuk :: ~ Bar() çubuğunda hiçbir zaman denir? (Ana çıkıştan sonraya kadar).
Teşekkürler!
Evet. İlk defa foo()
denen, Bar bar
inşa edilecektir. Daha sonra main()
bitirene kadar kullanılabilir olacak, sonra nokta imha edilecek.
Aslında var:
static Bar *bar = 0;
if (!bar)
{
bar = new Bar;
// not "real", of course
void delete_bar(void) { delete bar; }
atexit(delete_bar);
}
Not I "esasen" dedi; Bu muhtemelen gerçekleşen şey değil (gerçi çok uzak olduğunu düşünmüyorum).
3.7.1 dinamik depolama süresine sahip ne de yerel ne Tüm nesneler statik depolama süresine sahip
1 Statik saklama süresi. Bu nesnelerin depolanması, programın süresi boyunca devam edecektir (3.6.2, 3.6.3).