คำถามติดแท็ก one-definition-rule

15
เมื่อใดฉันจึงควรเขียนคำหลัก 'อินไลน์' สำหรับฟังก์ชั่น / วิธีการ?
Наэтотвопросестьответына กองมากเกินнарусском : Когдаследуетиспользоватьอินไลน์дляфункции / метода? ฉันควรเขียนคำหลักเมื่อใด inlineสำหรับฟังก์ชั่น / วิธีการใน C ++ เมื่อใด หลังจากเห็นคำตอบบางคำถามที่เกี่ยวข้อง: เมื่อใดที่ฉันไม่ควรเขียนคำว่า 'อินไลน์' สำหรับฟังก์ชั่น / วิธีการใน C ++ เมื่อไรที่คอมไพเลอร์ไม่ทราบว่าจะสร้างฟังก์ชั่น / เมธอด 'inline' เมื่อใด มันมีความสำคัญอย่างไรหากแอปพลิเคชันนั้นมีหลายเธรดเมื่อมีการเขียน 'inline' สำหรับฟังก์ชั่น / วิธีการ?

2
“ การใช้ ODR” หมายความว่าอย่างไร
เพียงแค่นี้ก็ขึ้นมาในบริบทของคำถามอื่น เห็นได้ชัดว่าฟังก์ชันสมาชิกในเทมเพลตคลาสจะถูกสร้างอินสแตนซ์เฉพาะเมื่อใช้ ODR ใครช่วยอธิบายได้ว่าหมายถึงอะไร บทความวิกิพีเดียหนึ่งนิยามกฎ (ODR)ไม่ได้พูดถึง " ODR การใช้งาน " อย่างไรก็ตามมาตรฐานกำหนดให้เป็น ตัวแปรที่มีชื่อปรากฏเป็นนิพจน์ที่มีการประเมินค่าจะถูกใช้แบบแปลกเว้นแต่ว่าจะเป็นอ็อบเจ็กต์ที่ตรงตามข้อกำหนดสำหรับการปรากฏในนิพจน์คงที่ (5.19) และการแปลงค่า lvalue-to-rvalue (4.1) จะถูกนำไปใช้ทันที ใน [basic.def.odr] แก้ไข: เห็นได้ชัดว่านี่เป็นส่วนที่ไม่ถูกต้องและทั้งย่อหน้ามีคำจำกัดความหลายคำสำหรับสิ่งต่างๆ นี่อาจเป็นสิ่งที่เกี่ยวข้องสำหรับฟังก์ชันสมาชิกเทมเพลตคลาส: ฟังก์ชันที่ไม่โอเวอร์โหลดซึ่งมีชื่อปรากฏเป็นนิพจน์ที่มีการประเมินผลหรือเป็นสมาชิกของชุดฟังก์ชันผู้สมัครหากเลือกโดยความละเอียดเกินพิกัดเมื่ออ้างถึงจากนิพจน์ที่มีการประเมินอาจจะใช้ไม่ได้เว้นแต่จะเป็นเสมือนจริงทั้งหมด ฟังก์ชันและชื่อของฟังก์ชันไม่ตรงตามคุณสมบัติอย่างชัดเจน อย่างไรก็ตามฉันไม่เข้าใจว่ากฎนี้ทำงานอย่างไรกับหน่วยคอมไพล์หลาย ๆ หน่วย? ฟังก์ชันของสมาชิกทั้งหมดถูกสร้างอินสแตนซ์หรือไม่หากฉันสร้างอินสแตนซ์เทมเพลตคลาสอย่างชัดเจน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.