‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะเรียนรู้เกี่ยวกับปรากฏการณ์ประหลาดที่เรียกว่า พารามิเตอร์เอาท์
‫นี่คือพารามิเตอร์ที่แทนที่จะส่งค่าใน C++ เรามักจะส่งค่าออกจากฟังก์ชัน
‫และเราจะได้เห็นสิ่งที่เรียกว่า การอ้างอิงคงที่ และแนวคิดทั้งสองนี้เชื่อมโยงกันอย่างไร
‫มาดำดิ่งลงไปและคิดออก
‫ตอนนี้.
‫สถานที่จริงที่อ้างอิงถึงความเปล่งประกายอยู่ในพารามิเตอร์ของฟังก์ชัน เพราะทุกครั้งที่เราสร้างโฟลตเดลต้าเวลาแบบนี้ในองค์ประกอบด้านเทคนิคของเรา
‫สิ่งที่เราทำคือเรากำลังคัดลอกโฟลตดั้งเดิมนั้นและส่งต่อไปยัง ฟังก์ชั่น.
‫ดังนั้นแทนที่จะทำอย่างนั้น สิ่งที่เราอาจต้องการทำคืออ้างอิงถึงมันและส่งต่อสิ่งนั้นแทน
‫ลองนึกภาพว่าเรากำลังสร้างฟังก์ชันในแรงโน้มถ่วงที่เรียกว่าความเสียหายจากการพิมพ์
‫และในฐานะอาร์กิวเมนต์ของฟังก์ชันนี้ เราต้องการส่งความเสียหายแบบลอยตัว
‫ทีนี้ อย่างที่ฉันบอกไป กำลังจะทำสำเนาของทุกสิ่งที่เราส่งผ่านเข้ามา และคัดลอกไปยังตัวแปรนั้น
‫สร้างตัวแปรพารามิเตอร์นี้ภายในฟังก์ชันความเสียหายของการพิมพ์
‫และเราจำเป็นต้องมีค่าส่งคืนเป็นโมฆะที่นี่เช่นกันเพื่อให้สมบูรณ์ในเครื่องหมายอัฒภาคตอนท้าย
‫ไปที่ C ++ และสนทนาต่อ
‫มาสร้างความเสียหายในการพิมพ์กันเถอะ
‫มาวางคุณคว้าชั้นเรียนไว้ก่อนแล้วใส่เครื่องหมายวงเล็บแทนเครื่องหมายอัฒภาค
‫ดังนั้นเราจึงมีสำเนาของตัวแปรพารามิเตอร์ความเสียหาย และปลอดภัยเพราะถ้าฉันต้องทำความเสียหายเท่ากับห้า
‫ฉันจะเปลี่ยนตัวแปรนี้ที่นี่ภายในความเสียหายของงานพิมพ์เท่านั้น
‫ฉันมีสำเนาของมันเอง
‫ฉันไม่สามารถทำให้มันยุ่งเหยิงได้โดยบังเอิญ
‫แล้วถ้าฉันไม่ต้องการทำสำเนาล่ะ
‫ทางเลือกของฉันคือการอ้างอิง
‫สิ่งที่ฉันทำได้ที่นี่คือฉันสามารถใส่ข้อมูลอ้างอิงแบบลอยตัวลงในความเสียหายของงานพิมพ์ได้
‫และฉันต้องอัปเดตสิ่งนั้นในไฟล์ C++ ด้วยเช่นกัน
‫แล้วฉันอาจมีข้อความบันทึกนี้ที่เรากำลังใช้ข้อมูลอ้างอิง ไปลบมันทิ้งและใส่มันลงในความเสียหายทางการพิมพ์
‫ตอนนี้เรารับความเสียหายและกำลังพิมพ์
‫Outlets อัปเดตคำสั่งบันทึกเพื่อบอกว่าความเสียหายคือสิ่งนี้ ดังนั้นความเสียหายนี้จึงสร้างความเสียหาย และในองค์ประกอบเห็บของเรา
‫สิ่งที่เราสามารถทำได้คือเราสามารถพิมพ์ความเสียหายและส่งผ่านตัวแปรความเสียหายของเราและใส่เครื่องหมายอัฒภาคต่อท้าย
‫และเราสามารถกำจัดการอ้างอิงความเสียหายของเราได้ สำหรับตอนนี้ เพราะสิ่งที่เราทำอยู่ตอนนี้คือดาเมจลอย
‫มันถูกสร้างขึ้นใน TTIC
‫หน่วยความจำสำหรับสิ่งนี้ถูกสร้างขึ้นที่นี่และทำเครื่องหมายจากนั้นเราไปและมอบให้กับฟังก์ชันความเสียหายของการพิมพ์
‫แต่เนื่องจากพารามิเตอร์เป็นข้อมูลอ้างอิง เราไม่ได้คัดลอกความเสียหายนี้จริงๆ
‫เราใช้ที่อยู่และจัดเก็บข้อมูลนั้นไว้ในข้อมูลอ้างอิงแทน เพื่อที่เมื่อเราใช้ข้อมูลอ้างอิงนี้ในบรรทัด
‫เรากำลังเข้าถึงหน่วยความจำเดิม
‫ดังนั้นจึงไม่จำเป็นต้องทำสำเนาเพื่อพิมพ์ความเสียหาย
‫ทีนี้ลองตรวจสอบว่านี่เป็นสิ่งที่เราคาดหวังไว้จริง ๆ
‫ถ้าฉันเปลี่ยนค่าความเสียหายเป็นห้า ตัวอย่างเช่น จากนั้นคอมไพล์ใหม่และกดปุ่มเล่น ให้ไปดูบันทึกผลลัพธ์นั้น
‫อันที่จริงได้รับการพิมพ์ว่าความเสียหายเป็นห้า
‫แต่เนื่องจากเรามีข้อมูลอ้างอิง เราจึงรู้ว่าเราสามารถอัปเดตค่านั้นได้
‫สิ่งที่ฉันทำได้คือฉันสามารถพูดได้ภายในฟังก์ชันนี้ว่าฉันทำได้ เฮ้ ความเสียหายควรเท่ากับสองอย่างนั้น
‫และถ้าฉันไม่ระวัง ถ้าฉันคิดว่าฉันมีสำเนาของตัวเอง ฉันอาจจะคิดว่ามันโอเค
‫แต่ที่จริงแล้วในองค์ประกอบติ๊ก สิ่งที่เราทำคือเราได้เปลี่ยนตัวแปรเดิม
‫ดังนั้น ถ้าฉันใส่ล็อกใหม่ที่นี่เพื่อตรวจสอบตัวแปรความเสียหายดั้งเดิมนั้น และเราใส่เปอร์เซ็นต์ F และส่งความเสียหายที่นี่
‫เรามาเขียนโค้ดแบบสด คอมไพล์มัน แล้วเราจะตีเพลย์และดูบันทึกผลลัพธ์ของเรา .
‫และคุณจะเห็นได้ว่าตอนนี้ทั้งความเสียหายและความเสียหายเดิมได้รับการแก้ไขแล้ว
‫พวกเขาทั้งสองถูกเปลี่ยนเป็นหมายเลขสองซึ่งไม่ดี
‫คุณรู้ไหมว่าคุณสามารถทำความเสียหายได้มากโดยไม่ได้ตั้งใจ ถ้าคุณจะแก้ตัวโดยเปลี่ยนตัวแปรที่คุณไม่ได้คาดหวังว่าจะเปลี่ยนแปลง
‫และนี่คือการใช้คำหลักคงที่ที่เราเคยเห็นในอดีต
‫ถ้าฉันติด const หน้าการอ้างอิง float ของฉัน สิ่งที่ฉันพูดที่นี่คือควรเป็นข้อมูลอ้างอิงที่คุณไม่สามารถเปลี่ยนแปลงได้
‫คุณไม่สามารถเรียกใช้ฟังก์ชันที่ไม่ติดต่อได้ คุณไม่สามารถตั้งค่าได้
‫คุณไม่สามารถเปลี่ยนแปลงเนื้อหาของตัวแปรนี้ได้
‫ใช้ได้เท่านั้น อ่านได้อย่างเดียว ดูได้เฉพาะสิ่งที่อยู่ในนั้น
‫ดังนั้นถ้าเรากลับไปจับ CPP ของเรา เราต้องแน่ใจว่าเราใส่ Const ที่นี่ในพารามิเตอร์ด้วย และเราสามารถดำเนินการต่อและคอมไพล์ได้
‫และคุณจะเห็นว่าเราได้รับความล้มเหลวในการสร้างและข้อผิดพลาดบอกว่าความเสียหายไม่สามารถ กำหนดให้เนื่องจากเป็นตัวแปรคงที่
‫เพื่อให้การป้องกันที่เราต้องการ
‫โดยทั่วไปแล้ว หากเราพยายามส่งผ่านตัวแปรเข้ามา ด้วยวิธีที่มีประสิทธิภาพโดยที่เราไม่ต้องการคัดลอก
‫เราจะใช้คำสำคัญติดต่อเสมอ และใช้ข้อมูลอ้างอิงเสมอ เพราะสิ่งนี้จะป้องกันเราจาก
‫บังเอิญเปลี่ยนเนื้อหานั้น
‫อย่างไรก็ตาม บางครั้งคุณต้องการใช้มันเพื่อเปลี่ยนค่านั้นและสิ่งที่เราอาจมีเป็นตัวอย่าง เราอาจมีค่าส่งคืนบูลีนและเราอาจต้องการบอกว่ามีความเสียหาย
‫แต่เราอาจเช่นกัน ตามที่เราทำใน พิมพ์เขียวในอดีตต้องการให้มีค่าส่งคืนที่สอง
‫เราอาจกล่าวได้ว่า เราได้ความเสียหายมาอย่างไร และความเสียหายนั้นคืออะไร?
‫ในกรณีนี้ มันสมเหตุสมผลแล้วที่จะใช้การอ้างอิงแบบ non const แบบง่ายๆ ซึ่งเป็นการอ้างอิงแบบ float
‫ความเสียหาย และโดยปกติ เราจะเรียกสิ่งนี้ว่าความเสียหายเพียงเพื่อให้เห็นได้ชัดเจนว่านี่คือสิ่งที่เรียกว่าค่าพารามิเตอร์
‫ไม่ใช่พารามิเตอร์สำหรับการส่งผ่านสิ่งต่างๆ
‫เป็นพารามิเตอร์สำหรับการส่งผ่านสิ่งต่าง ๆ
‫ตอนนี้อาจเป็นเรื่องแปลก ๆ เล็กน้อยของ C ++ และอาจมองเห็นได้ยาก
‫แต่โดยทั่วไปแล้ว หากคุณเห็นพารามิเตอร์ใด ๆ ที่เป็นข้อมูลอ้างอิงแต่ไม่ได้ทำเครื่องหมายเป็น
‫const คุณสามารถสันนิษฐานได้ว่ามีใครบางคนตั้งใจจะใช้สิ่งนั้นเป็นพารามิเตอร์ out
‫นั่นคือสิ่งที่เราได้รับที่นี่
‫เราได้รับความเสียหาย
‫และถ้าเราจะดำเนินการนี้ใน CPP เราก็สามารถใส่คลาส you grabber ไว้ข้างหน้าที่นี่
‫และเราสามารถใส่วงเล็บปีกกาของเราที่นี่
‫เราจะแสดงความคิดเห็นเกี่ยวกับความเสียหายในการพิมพ์ซึ่งไม่พอใจเพราะเรากำลังพยายามตั้งค่าการอ้างอิงต้นทุน
‫และโดยพื้นฐานแล้ว สิ่งที่เราสามารถทำได้ในที่นี้คือ เราสามารถทำโค้ดได้ เราสามารถดูว่าเราได้รับความเสียหายหรือไม่
‫จากนั้นเราจะพิมพ์ออกมา ใช่ โอเค
‫ความเสียหายออกเท่ากับห้า
‫นั่นคือความเสียหายที่เกิดขึ้นและเรากำลังจะกลับ
‫จริงอยู่ เนื่องจากเราได้รับความเสียหายบางส่วนที่ได้ทำไปแล้ว และตอนนี้เราสามารถนำไปใช้ในที่ใดที่หนึ่ง
‫เช่น ส่วนประกอบเห็บเพื่อรับความเสียหาย
‫ดังนั้นที่นี่แทนที่จะตั้งค่าความเสียหายห้า เราอาจได้รับความเสียหายและพิมพ์หากมีความเสียหาย
‫ดังนั้นเราสามารถพูดอะไรบางอย่างตามบรรทัดเหล่านี้ได้หากมีความเสียหาย จากนั้นเราส่งตัวแปรที่เราต้องการให้สร้างความเสียหาย
‫ตัวอย่างเช่น ความเสียหาย และจากนั้นเราสามารถมีเนื้อความของคำชี้แจงของเรา และเราสามารถเรียกความเสียหายจากการพิมพ์ได้เท่านั้น
‫ตัวอย่างเช่น หากมีความเสียหายใด ๆ ที่จะแสดง และเราสามารถลบบันทึกนี้ทั้งหมดได้
‫ดังนั้นนี่คือวิธีที่เราใช้การอ้างอิงที่ไม่ใช่ const เป็นพารามิเตอร์ out ซึ่งเป็นวิธีการรับค่าส่งคืนหลายค่าจากฟังก์ชัน
‫และโดยปกติเมื่อเราทำเช่นนี้ เมื่อเราเรียกใช้ฟังก์ชันนี้ เราจะสร้างตัวแปร แต่เราจะไม่ให้ค่าเริ่มต้นแก่มัน
‫ดังนั้นในบรรทัดที่ 39 โดยพื้นฐานแล้ว ฉันได้กำหนดความเสียหายแบบลอยตัว ฉันจะส่งมันในบรรทัดถัดไปทันที
‫และนี่คือสัญญาณบอกอีกอย่างหนึ่งว่าคุณกำลังใช้พารามิเตอร์ out
‫ฉันไม่ได้ให้ค่าใด ๆ ก่อนที่ฉันจะส่งต่อไปยังฟังก์ชันหมายความว่าฉันคาดหวังว่าฟังก์ชันนั้นจะใส่ค่านั้นให้ฉัน
‫ดังนั้นสิ่งนี้จึงมองเห็นได้ยากในตอนแรกและอาจทำให้สับสนเล็กน้อย
‫แต่นี่เป็นกฎสองข้อที่ฉันอยากให้คุณจำไว้
‫หากคุณเห็นตัวแปรประกาศและไม่ได้รับค่าใด ๆ และส่งผ่านไปยังฟังก์ชันทันที ให้ถามตัวเองว่านั่นคือพารามิเตอร์
‫out หรือไม่
‫และกฎอีกข้อคือ ถ้าคุณเห็นการอ้างอิงเป็นพารามิเตอร์ แต่ไม่ใช่ค่าคงที่ นั่นอาจเป็นคำใบ้ว่านี่เป็นพารามิเตอร์ขาออก
‫และแน่นอนว่าถ้าตัวแปรหรือพารามิเตอร์ถูกตั้งชื่อว่าอะไร นั่นเป็นการแจกฟรีที่สิ่งนี้ควรจะเป็นพารามิเตอร์ขาออก
‫สิ่งที่ดี
‫ฉันคิดว่านั่นทำให้เราทำได้ดีมาก สำหรับการกวาดล้าง
‫แล้วพบกันใหม่ในบทเรียนหน้าครับ