คำหลักคงที่และการใช้งานที่หลากหลายใน C ++
คำหลักstaticคือคำที่มีความหมายหลายอย่างใน C ++ ที่ฉันพบว่าสับสนมากและฉันไม่สามารถงอใจได้ว่ามันควรจะทำงานอย่างไร จากสิ่งที่ฉันเข้าใจมีstaticระยะเวลาการจัดเก็บข้อมูลซึ่งหมายความว่ามันมีอายุการใช้งานของโปรแกรมในกรณีของโลก แต่เมื่อคุณพูดถึงท้องถิ่นก็หมายความว่ามันเริ่มต้นเป็นศูนย์โดยค่าเริ่มต้น C ++ Standard กล่าวสิ่งนี้สำหรับสมาชิกคลาสข้อมูลที่มีคีย์เวิร์ดstatic: 3.7.1 ระยะเวลาการจัดเก็บแบบคงที่ [basic.stc.static] 3 คำสำคัญคงที่สามารถใช้ในการประกาศตัวแปรท้องถิ่นที่มีระยะเวลาการจัดเก็บแบบคงที่ 4 สแตติกคำสำคัญที่ใช้กับสมาชิกคลาสข้อมูลในคำจำกัดความคลาสให้ระยะเวลาการเก็บข้อมูลสมาชิกแบบคงที่ มันหมายความว่าอะไรกับตัวแปรท้องถิ่น ? นั่นคือฟังก์ชั่นตัวแปรท้องถิ่น? เพราะมันยังมีที่เมื่อคุณประกาศฟังก์ชั่นในท้องถิ่นstaticว่ามันจะเริ่มต้นเพียงครั้งเดียวครั้งแรกที่มันเข้าสู่ฟังก์ชั่นนี้ นอกจากนี้ยังพูดถึงระยะเวลาในการจัดเก็บเฉพาะสมาชิกชั้นเรียนว่าเป็นเรื่องที่ไม่เฉพาะเจาะจงซึ่งเป็นคุณสมบัติที่staticไม่ หรือว่าเป็นระยะเวลาการเก็บรักษา? ตอนนี้สิ่งที่เกี่ยวกับกรณีที่มีstaticและขอบเขตไฟล์? ตัวแปรส่วนกลางทั้งหมดถูกพิจารณาว่ามีระยะเวลาการเก็บแบบสแตติกตามค่าเริ่มต้นหรือไม่ ดูเหมือนว่าต่อไปนี้ (จากส่วน 3.7.1) ดังต่อไปนี้: 1 ตัวแปรทั้งหมดที่ไม่มีระยะเวลาการจัดเก็บแบบไดนามิกไม่มีระยะเวลาการจัดเก็บด้ายและไม่ท้องถิ่นมีระยะเวลาการจัดเก็บแบบคงที่ ที่เก็บข้อมูลสำหรับเอนทิตีเหล่านี้จะคงอยู่ตลอดระยะเวลาของโปรแกรม (3.6.2, 3.6.3) วิธีการที่ไม่staticเกี่ยวข้องกับการเชื่อมโยงของตัวแปร? staticคำหลักทั้งหมดนี้ทำให้เกิดความสับสนอย่างจริงจังใครบางคนสามารถอธิบายการใช้ภาษาอังกฤษที่แตกต่างกันและบอกฉันเมื่อใดที่จะเริ่มstaticสมาชิกคลาส?