ค่าของ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
ตัวชี้เสมอคือค่าของที่อยู่ของวัตถุที่เรียกใช้ฟังก์ชัน ดังนั้นคำถามจึงเทียบเท่ากับ'วัตถุสามารถเปลี่ยนที่อยู่หน่วยความจำตลอดช่วงเวลาชีวิตได้หรือไม่'