การอ้างอิงไม่ทำงานในลักษณะเดียวกับพอยน์เตอร์: สำหรับพอยน์เตอร์คุณสามารถมี 'พอยน์เตอร์พอยน์' ( type * const p
) และ 'พอยน์เตอร์ to const' ( const type * p
หรือtype const * p
)
แต่คุณไม่มีสิ่งนี้สำหรับการอ้างอิง: การอ้างอิงจะอ้างอิงถึงวัตถุเดียวกันเสมอ ในแง่นั้นคุณสามารถพิจารณาว่า 'การอ้างอิง' คือ 'การอ้างอิง const' (เช่นเดียวกับที่คุณมี 'ตัวชี้ const')
ดังนั้นบางอย่างเช่น 'ประเภทและการอ้างอิง const' จึงไม่ถูกกฎหมาย คุณสามารถมี 'อ้างอิงถึงประเภท' ( type &ref
) และ 'อ้างอิงถึงประเภทคงที่' ( const type &ref
หรือtype const &ref
; ทั้งสองมีค่าเท่ากันทั้งหมด)
สิ่งสุดท้ายสิ่งหนึ่ง: แม้ว่าจะconst type
ฟังดูถูกต้องมากขึ้นในภาษาอังกฤษการเขียนtype const
จะช่วยให้เข้าใจคำประกาศอย่างเป็นระบบมากขึ้น "จากขวาไปซ้าย": int const & ref
สามารถอ่านได้ว่า 'อ้างอิงเป็นการอ้างอิงถึง int คงที่' หรือตัวอย่างที่ซับซ้อนมากขึ้น: int const * const & ref
การอ้างอิงเป็นการอ้างอิงไปยังตัวชี้ค่าคงที่ไปยังค่าคงที่
สรุป: ในคำถามของคุณทั้งสองมีความเท่าเทียมกันอย่างแน่นอน