this
İşaretçinin değerinin, belirli bir nesnenin ömrü boyunca sabit olması garanti ediliyor mu?
Evet .
Kullanıcı Aconcagua'nın belirttiği gibi: this
işaretçinin değeri her zaman işlevin çağrıldığı nesnenin adresinin değeridir 1 . Yani soru şuna denktir:
Bir nesne yaşam boyu bellek adresini değiştirebilir mi?
Bu, lifetime
2'nin tanımı ile mümkün değildir . Bir nesnenin ömrü, depolandığı zaman veya sonra başlar ve serbest bırakılmadan önce sona erer.
1) [class.this]/1
Statik olmayan ( [class.mfct]
) üye işlevinin gövdesinde , anahtar kelime değeri işlevin çağrıldığı nesneye bir işaretçi olan this
bir ön değerdir.
2) [basic.life]/1
(benimkini vurgulayın)
Bir nesnenin veya başvurunun ömrü, nesnenin veya başvurunun çalışma zamanı özelliğidir. Bir değişkenin, varsayılan olarak başlatılmışsa ve sınıf tipinde veya (muhtemelen çok boyutlu) bir dizisindeyse, bu sınıf tipinde önemsiz bir varsayılan yapıcı varsa, boş bir başlatmaya sahip olduğu söylenir.
Türdeki bir nesnenin ömrü şu T
durumlarda başlar :
- tipe
T
uygun hizalama ve boyutta depolama elde edilir ve
- başlatma (varsa) tamamlanır (boş başlatma dahil) (
[dcl.init]
), ancak nesne bir sendika üyesi veya alt nesnesiyse, ömrü yalnızca bu sendika üyesi sendikada ( [dcl.init.aggr]
, [class.base.init]
) başlatılmış üye ise veya tarif [class.union]
.
Bir o
tür nesnenin ömrü şu T
durumlarda sona erer :
- Eğer
T
olmayan bir sınıf tipi, nesne, ya da yok edilir
- eğer
T
bir sınıf tipidir yıkıcı çağrı başlatır veya
- nesnenin kapladığı depolama serbest bırakılır veya
o
( [intro.object]
) içine yerleştirilmemiş bir nesne tarafından yeniden kullanılır .
this
İşaretçinin değeri her zaman işlevin çağrıldığı nesnenin adresinin değeridir. Yani soru 'bir nesne yaşam boyunca bellek adresini değiştirebilir mi?'