ค่าของthisตัวชี้รับประกันเป็นค่าคงที่ในช่วงชีวิตของวัตถุเฉพาะหรือไม่?
ใช่แล้ว
ในฐานะผู้ใช้Aconcaguaทำให้มัน: ค่าของthisตัวชี้เสมอคือค่าของที่อยู่ของวัตถุที่ฟังก์ชั่นที่เรียกว่าใน1 ดังนั้นคำถามจะเทียบเท่ากับ:
วัตถุสามารถเปลี่ยนที่อยู่หน่วยความจำในช่วงชีวิตได้หรือไม่?
นี้เป็นไปไม่ได้โดยความหมายของ2lifetime อายุการใช้งานของวัตถุเริ่มต้นเมื่อหรือหลังจากที่ได้รับการจัดเก็บและสิ้นสุดลงก่อนเมื่อมันถูกปล่อยออกมา
1) [class.this]/1
ในเนื้อความของ[class.mfct]ฟังก์ชันสมาชิกnon-static ( ) คำสำคัญthisคือprvalueซึ่งค่าเป็นตัวชี้ไปยังวัตถุที่เรียกใช้ฟังก์ชัน
2) [basic.life]/1 (เน้นที่เหมือง)
อายุการใช้งานของวัตถุหรือการอ้างอิงเป็นคุณสมบัติรันไทม์ของวัตถุหรือการอ้างอิง ตัวแปรถูกกล่าวว่ามีการเริ่มต้นที่ว่างถ้ามันเป็นค่าเริ่มต้นและถ้ามันเป็นประเภทคลาสหรืออาร์เรย์ (อาจเป็นหลายมิติ) ของมันประเภทคลาสนั้นมีคอนสตรัคเตอร์แบบปริยาย
อายุการใช้งานของออบเจ็กต์ประเภทTเริ่มต้นเมื่อ :
- การจัดเก็บด้วยการจัดตำแหน่งและขนาดที่เหมาะสมสำหรับประเภท
Tได้รับและ
- การเริ่มต้นของมัน (ถ้ามี) จะเสร็จสมบูรณ์ (รวมถึงการเริ่มต้นว่าง) (
[dcl.init]) ยกเว้นว่าถ้าวัตถุเป็นสมาชิกสหภาพหรือ subobject ดังกล่าวอายุการใช้งานของมันจะเริ่มต้นถ้าสมาชิกสหภาพนั้นเป็นสมาชิกเริ่มต้นในสหภาพ ( [dcl.init.aggr], [class.base.init]) หรือ [class.union]อธิบายไว้ใน
อายุการใช้งานของวัตถุoประเภทTสิ้นสุดลงเมื่อ :
- ถ้า
Tเป็นชนิดที่ไม่ใช่คลาสวัตถุถูกทำลายหรือ
- ถ้า
Tเป็นประเภทคลาสการเรียก destructor จะเริ่มขึ้นหรือ
- หน่วยเก็บข้อมูลที่วัตถุครอบครองถูกปล่อยหรือถูกนำมาใช้ซ้ำโดยวัตถุที่ไม่ซ้อนอยู่ภายใน
o( [intro.object])
thisตัวชี้เสมอคือค่าของที่อยู่ของวัตถุที่เรียกใช้ฟังก์ชัน ดังนั้นคำถามจึงเทียบเท่ากับ'วัตถุสามารถเปลี่ยนที่อยู่หน่วยความจำตลอดช่วงเวลาชีวิตได้หรือไม่'