Apakah nilai this
pointer dijamin konstan selama masa pakai objek tertentu?
Ya .
Seperti yang dikatakan oleh pengguna Aconcagua : nilai this
pointer selalu adalah nilai dari alamat objek tempat fungsi dipanggil pada 1 . Jadi pertanyaannya setara dengan:
Bisakah suatu objek mengubah alamat memorinya sepanjang hidup?
Ini tidak mungkin, dengan definisi lifetime
2 . Masa hidup suatu objek dimulai ketika atau setelah penyimpanannya diperoleh dan berakhir sebelum saat dilepaskan.
1) [class.this]/1
Dalam isi fungsi anggota non-statis ( [class.mfct]
), kata kunci this
adalah nilai awal yang nilainya adalah penunjuk ke objek yang dipanggil untuk fungsi tersebut.
2) [basic.life]/1
(beri penekanan pada saya)
Masa pakai suatu objek atau referensi adalah properti runtime dari objek atau referensi. Variabel dikatakan memiliki inisialisasi kosong jika itu adalah inisialisasi default dan, jika itu adalah tipe kelas atau array (mungkin multi-dimensi) daripadanya, tipe kelas tersebut memiliki konstruktor standar sepele.
Masa hidup suatu objek bertipe T
dimulai ketika :
- penyimpanan dengan perataan dan ukuran yang tepat untuk jenis
T
diperoleh , dan
- inisialisasi (jika ada) selesai (termasuk inisialisasi kosong) (
[dcl.init]
), kecuali bahwa jika objeknya adalah anggota serikat pekerja atau sub-proyeknya, masa pakainya hanya dimulai jika anggota serikat tersebut adalah anggota yang diinisialisasi dalam serikat pekerja ( [dcl.init.aggr]
, [class.base.init]
), atau sebagai dijelaskan dalam [class.union]
.
Umur objek o
bertipe T
berakhir ketika :
- jika
T
adalah tipe non-kelas, objek dihancurkan, atau
- jika
T
adalah tipe kelas, panggilan destruktor dimulai, atau
- penyimpanan yang diduduki oleh objek dilepaskan , atau digunakan kembali oleh objek yang tidak bersarang di dalam
o
( [intro.object]
).
this
pointer selalu adalah nilai dari alamat objek tempat fungsi dipanggil. Jadi pertanyaannya setara dengan 'dapatkah suatu benda mengubah alamat ingatannya sepanjang hidup?'