thisİşaretçinin değerinin, belirli bir nesnenin ömrü boyunca sabit olması garanti ediliyor mu?
Evet .
Kullanıcı Aconcagua'nın belirttiği gibi: thisiş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, lifetime2'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 thisbir ö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 Tdurumlarda 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 otür nesnenin ömrü şu Tdurumlarda sona erer :
- Eğer
Tolmayan bir sınıf tipi, nesne, ya da yok edilir
- eğer
Tbir 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?'