‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะดู C++ ที่เทียบเท่ากับฟังก์ชันพิมพ์เขียวบริสุทธิ์ ซึ่งเป็นฟังก์ชันแนวคิด
‫เราจะดูว่าคีย์เวิร์ดของคู่หมั้นนี้คืออะไร เราใช้อย่างไร และมันจำกัดสิ่งที่เราสามารถทำได้ในโค้ดของเราอย่างไรเพื่อให้เราปลอดภัยยิ่งขึ้น
‫มาดูกันว่ามันทำงานอย่างไร
‫ด้วยการพิมพ์สีน้ำเงิน เราสามารถสร้างฟังก์ชันที่บริสุทธิ์ได้ และนั่นหมายความว่าเราสามารถขจัดความจำเป็นในการสั่งการพิน
‫ทีนี้ ใน C++ เราสามารถทำอะไรที่แรงกว่านี้ได้อีกหน่อย ซึ่งก็คือการทำให้ฟังก์ชันคงที่
‫ทีนี้ การสร้างฟังก์ชัน const หมายความว่าอย่างไร
‫หมายความว่าฟังก์ชันนั้นไม่สามารถแก้ไขสถานะของคลาสของคุณได้ และบังคับใช้ตามกฎของคอมไพเลอร์
‫ผมขอยกตัวอย่าง
‫ถ้าฉันจะใช้ฟังก์ชัน return platform ของเรา นี่ไม่ใช่ฟังก์ชันที่ควรแก้ไขอะไรในคลาส และมันจะเป็นข้อผิดพลาดจริง
‫ๆ หากเราลืมไป เพราะมันคงจะแปลกถ้าเรียกสิ่งนี้และใช้ในคำสั่ง if ที่เปลี่ยนไปจริง ตำแหน่งของชานชาลาหรือถ้ามันอัพเดทระยะทางเคลื่อนที่หรือความเร็วของแพลตฟอร์ม
‫ดังนั้นเพื่อให้ตัวเองซื่อสัตย์ต่อสิ่งนั้น เราสามารถทำให้มันเปลี่ยนใจเลื่อมใสได้
‫และวิธีที่เราทำคือใส่คีย์เวิร์ดผู้ติดต่อหลังวงเล็บของฟังก์ชัน
‫เรามักจะทิ้งช่องว่างไว้ที่นี่เช่นกัน
‫ตอนนี้ เพื่อให้ตรงกับฟังก์ชันในไฟล์ C++ อย่างถูกต้อง เราจึงต้องใส่คีย์เวิร์ด
‫const นั้นไว้ที่นั่นด้วย
‫อย่างที่ฉันพูดไป ตอนนี้ทำให้เกิดข้อผิดพลาดในการทำสิ่งใดๆ ที่จะปรับเปลี่ยนคลาส
‫ดังนั้นหากแพลตฟอร์มกลับมา ฉันต้องพยายามแก้ไขตัวแปรคลาส เช่น ระยะเคลื่อนที่
‫ฉันอาจลองตั้งค่าระยะการเคลื่อนที่เป็น 200
‫มาดูกันว่าจะเกิดอะไรขึ้นเมื่อเราไปที่ Unreal แล้วกดปุ่มคอมไพล์
‫ตกลง.
‫คุณจะเห็นว่าขณะนี้มีข้อผิดพลาด
‫มันล้มเหลวในการสร้างและถ้าคุณดูข้อผิดพลาด คุณจะเห็นว่ามีบางอย่างที่พูดเกี่ยวกับไม่สามารถแก้ไขบางสิ่งได้
‫เนื่องจากมีการเข้าถึงผ่านตัวชี้คงที่
‫ตอนนี้ไม่ต้องกังวลเกี่ยวกับภาษานั้น
‫ตีความยากนิดหน่อย แต่ประเด็นคือมี const ของคีย์เวิร์ดอยู่ และบอกว่าไม่สามารถแก้ไขบางอย่างได้
‫และนั่นเป็นสิ่งสำคัญ
‫นอกจากนี้ หากคุณเรียกใช้ฟังก์ชันใดๆ ที่ไม่ได้ทำเครื่องหมายว่าเป็น const นั่นก็เป็นปัญหาเช่นกัน
‫ดังนั้นในขณะที่เรียกตำแหน่งนักแสดงที่เป็นฟังก์ชันต้นทุนได้ จะไม่เปลี่ยนแปลงอะไรเพียงแค่ได้รับตำแหน่ง
‫เรียกที่ตั้งนักแสดงที่ไม่ได้ถูกทำเครื่องหมายว่าเป็น const นั้นไม่ถูกต้อง ดังนั้นจึงไม่ถูกต้อง
‫มันสามารถปรับเปลี่ยนคลาส
‫ดังนั้นฟังก์ชันใดๆ ที่ไม่ได้ทำเครื่องหมายเป็น const จะไม่ได้รับอนุญาตให้เรียกใช้จากภายในฟังก์ชันต้นทุน
‫ดังนั้นคุณจึงมองเห็นปัญหาที่เกิดขึ้นได้
‫เราไม่สามารถเรียก get Distance ที่เคลื่อนที่จากภายในที่เราควรจะส่งคืน Platform เพราะหากการส่งคืนของ Platform มีค่าคงที่ แต่การได้ระยะทางที่เคลื่อนที่ไม่ได้ถูกทำเครื่องหมายไว้เช่นนั้น
‫ดังนั้นการชาร์จอย่างรวดเร็วให้กับคุณได้รับระยะทางที่เคลื่อนที่ const ทำให้ได้ค่าย้ายระยะทาง
‫ดังนั้นในส่วนหัวและดูไฟล์ p คุณจะเพิ่มคีย์เวิร์ด const นั้นเพื่อให้ C ++ รู้ว่าไม่ควรแก้ไขคลาสและรวบรวมตอนนี้ หยุดวิดีโอชั่วคราวและไปกันเลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫ดังนั้นเราจะไปที่ไฟล์ส่วนหัวก่อน
‫และหลังจากวงเล็บปิด เราจะเพิ่มแนวคิดช่องว่าง จากนั้นเราจะกลับไปที่ไฟล์
‫C++
‫และหลังจากวงเล็บระยะทางเคลื่อนไป เราจะใส่แนวคิดเรื่องอวกาศ
‫ตอนนี้เส้นหยักภายใต้ระยะทางที่ขยับควรอัปเดตในอีกสักครู่
‫แต่ถ้าเราไปที่ Unreal แล้วกดปุ่มคอมไพล์ นั่นจะเป็นตัวตัดสินที่ดีที่สุดว่าคอมไพเลอร์ชอบสิ่งที่เราทำหรือไม่
‫และคราวนี้การรวบรวมก็สำเร็จ ซึ่งหมายความว่าเราได้อัปเดตโค้ดของเราอย่างถูกต้องแล้ว
‫และนั่นก็สมเหตุสมผลเพราะไม่มีอะไรถูกเรียกจากการขยับระยะทางที่ไม่ใช่แนวคิด ไม่ได้พยายามเปลี่ยนแปลงอะไรเลย
‫และที่ที่เราเรียกใช้ฟังก์ชันในกรณีที่แพลตฟอร์มกลับมา เราใช้เฉพาะฟังก์ชัน const และนี่เป็นวิธีที่เราจะเพิ่มความปลอดภัยให้กับโค้ดของเรา
‫เนื่องจากฟังก์ชันต่างๆ จะไม่เปลี่ยนแปลงสิ่งต่างๆ โดยที่เราไม่รู้เกี่ยวกับเรื่องนี้
‫เพื่อเป็นการออกกำลังกายเล็กๆ น้อยๆ สำหรับตัวคุณเอง คุณอาจต้องการดูหน้าที่ทั้งหมดที่เราใช้มาจนถึงตอนนี้
‫และดูว่าฟังก์ชันใดถูกทำเครื่องหมายเป็นค่าคงที่ ซึ่งไม่ใช่ฟังก์ชัน
‫คุณสามารถทำได้โดยเพียงแค่วางเมาส์เหนือฟังก์ชัน เช่น รับตำแหน่งนักแสดง และดูว่าป๊อปอัปที่รวมอยู่หรือไม่
‫ไม่ว่าจะมีการติดต่อหรือไม่ก็ตามหลังวงเล็บ
‫คุณสามารถเห็นได้เมื่อวางตำแหน่งที่ทำงานอยู่เหนือมัน ทำให้ฉันวางเมาส์เหนือได้รับชื่อ และยังทำให้ฉันเห็นว่านี่เป็นข้อผูกมัดและสมเหตุสมผล
‫ทั้งสองไม่ควรเปลี่ยนสถานะของชั้นเรียนของเรา
‫ตอนนี้ ถ้าฉันวางเมาส์เหนือขีด คุณจะเห็นว่าอันนี้ไม่ได้ทำเครื่องหมายเป็น const และนั่นก็สมเหตุสมผลเพราะโดยปกติแล้ว
‫Tick จะใช้เพื่ออัปเดตว่าคลาสอยู่ในตำแหน่งใดในโลกหรือสถานะใดๆ ของคลาส
‫และเราได้เวกเตอร์แล้ว
‫ถ้าเราวางเมาส์เหนือ ปลอดภัย ปกติ คุณจะเห็นว่ามันถูกทำเครื่องหมายเป็น const นั่นเป็นเพราะ
‫get safe normal ไม่ได้แก้ไขเวกเตอร์จริงๆ มันก็แค่คืนค่าที่มีเวกเตอร์ใหม่อยู่ในนั้น
‫แค่นั้นเอง
‫สำหรับการบรรยายนี้ เราได้เรียนรู้เกี่ยวกับการเพิ่ม const ให้กับฟังก์ชันของเรา เพื่อเพิ่มความปลอดภัยของโค้ดของเรา
‫เจอกันใหม่ตอนหน้าค่ะ