ตัวชี้นี้
ในชั้นเรียนจะมีพอยน์เตอร์พิเศษซ่อนอยู่ ซึ่งก็คือ พอยน์เตอร์นี้ !
ทำไมมันถึงพิเศษ? เนื่องจากตราบเท่าที่มีการกำหนดคลาส ระบบจะกำหนดพอยน์เตอร์ที่ตั้งชื่อไว้ล่วงหน้าและชี้ไปที่อ็อบเจ็กต์ปัจจุบัน แม้ว่าเราจะมองไม่เห็นมันแต่เราก็สามารถใช้มันได้
ตัวอย่างเช่น ลองดูที่ฟังก์ชันสมาชิกของคลาสนาฬิกา ซึ่งเป็นโค้ดที่ใช้ตั้งค่าเวลา:
intClock::SetTime(inth,intm,ints){H=h;M=m;S=s;}
คุณจะเห็นว่าตัวแปรสมาชิกของคลาส Clock คือ H, M และ S ซึ่งจำเป็นต้องกำหนดค่าจากภายนอก เพื่อแยกความแตกต่างเรากำหนด พารามิเตอร์ที่เป็นทางการ เป็นตัวพิมพ์เล็ก ดังนั้นถ้าเรารู้ความมีอยู่ของสิ่งนี้ เราก็เขียนได้ดังนี้:
intClock::SetTime(inth,intm,ints){this->H=h;this->M=m;this->S=s;}// นอกจากนี้ยังสามารถเขียนเป็น: intClock::SetTime(inth, intm,ints ){(*สิ่งนี้).H=h;(*สิ่งนี้).M=m;(*สิ่งนี้).S=s;}
จะเห็นได้ว่าวิธีการเขียนทั้งสองวิธีข้างต้นใช้ตัวชี้ที่ซ่อนอยู่ในวัตถุซึ่งสามารถเป็นสมาชิกของคลาสนี้ได้อย่างชัดเจน จึงทำให้วัตถุนี้แตกต่างจากตัวแปรภายนอกอย่างชัดเจน ในความเป็นจริง เมื่ออ็อบเจ็กต์เรียกใช้ฟังก์ชันสมาชิก แม้ว่าจะมีหลายอ็อบเจ็กต์ของคลาสนี้ในโปรแกรม ก็มีเพียงโค้ดเดียวสำหรับฟังก์ชันสมาชิก ดังนั้น เพื่อที่จะแยกแยะว่าอ็อบเจ็กต์ใดเรียกใช้ฟังก์ชันสมาชิก คอมไพลเลอร์ด้วย แปลง มันถูกใช้ในรูปแบบของฟังก์ชัน this->member