ในคู่มือนี้ เราจะดูที่ ตัวดำเนินการเครื่องหมายทวิภาคคู่ (::) ใน C++ และวิธีการทำงานในสถานการณ์ต่างๆ
อะไร :: ทำใน C ++?
ใน C++, ขอบเขตความละเอียด ตัวดำเนินการ (::) ใช้เพื่อดึงชื่อตัวแปรที่อยู่ในขอบเขตระดับต่างๆ ขอบเขตในการเขียนโปรแกรมหมายถึงบริบทที่สามารถเข้าถึงตัวแปรและฟังก์ชันได้
การใช้ :: ในกรณีต่างๆ ใน C++
ใน C++, ตัวดำเนินการแก้ไขขอบเขต (::) มีการใช้งานที่หลากหลายขึ้นอยู่กับบริบทที่ใช้ ต่อไปนี้เป็นการใช้งานที่โดดเด่นของโอเปอเรเตอร์นี้:
1: เข้าถึงตัวแปรหรือฟังก์ชันในเนมสเปซอื่น
ก เนมสเปซ ใช้ใน C++ เพื่อจัดกลุ่มฟังก์ชัน คลาส และตัวแปรที่เกี่ยวข้องเพื่อหลีกเลี่ยงการตั้งชื่อที่ขัดแย้งกัน เมื่อคุณกำหนดตัวแปรหรือฟังก์ชันภายใน เนมสเปซ ชื่อของตัวแปรหรือฟังก์ชันจะมองเห็นได้ภายในนั้นเท่านั้น เนมสเปซ .
ใน C++ คุณสามารถใช้ไฟล์ ตัวดำเนินการแก้ไขขอบเขต (::) พร้อมด้วย เนมสเปซ ชื่อและชื่อตัวแปรหรือฟังก์ชันเพื่อเข้าถึงตัวแปรหรือฟังก์ชันที่กำหนดในเนมสเปซอื่น ซึ่งช่วยให้คุณเข้าถึงตัวแปรหรือฟังก์ชันจาก เนมสเปซ นอกเหนือจากที่สร้างขึ้น
เพื่อทำความเข้าใจกรณีข้างต้น ให้พิจารณาโค้ดต่อไปนี้เป็นตัวอย่าง:
#รวมถึงใช้เนมสเปซมาตรฐาน ;
คณิตศาสตร์เนมสเปซ {
เนื้อหา สองเท่า ปี่ = 3.14159 ;
สองเท่า สี่เหลี่ยม ( สองเท่า x ) {
กลับ x * x ;
}
}
นานาชาติ หลัก ( ) {
ศาล << 'ค่าของ PI คือ: ' << คณิตศาสตร์ :: ปี่ << จบ ;
ศาล << 'กำลังสองของ 5 คือ: ' << คณิตศาสตร์ :: สี่เหลี่ยม ( 5 ) << จบ ;
กลับ 0 ;
}
รหัสข้างต้นใช้ เนมสเปซคณิตศาสตร์ เพื่อเข้าถึง “ปี่” ค่าคงที่และ 'สี่เหลี่ยม' ฟังก์ชันโดยใช้ ตัวดำเนินการแก้ไขขอบเขต “::” . จากนั้นพิมพ์ค่าไปยังคอนโซล
เอาต์พุต
2: เข้าถึง Global Variable ในโปรแกรม
เมื่อชื่อเดียวกันของตัวแปรโลคัลและโกลบอลปรากฏในโปรแกรม ตัวแปรโลคัลอาจซ่อนตัวแปรโกลบอล ในสถานการณ์เช่นนี้ คุณสามารถใช้ ตัวดำเนินการแก้ไขขอบเขต (::) สำหรับการเข้าถึงตัวแปรส่วนกลาง ตัวดำเนินการนี้ช่วยให้เราสามารถอ้างถึงตัวแปรส่วนกลางตามขอบเขตของมันได้อย่างชัดเจน
ตัวอย่างเช่น ในโค้ดด้านล่าง เราได้อ้างถึงตัวแปรส่วนกลาง ‘ก ‘ ผ่านทาง ตัวดำเนินการแก้ไขขอบเขต (::) จากภายในฟังก์ชันที่มีการกำหนดตัวแปรโลคัลที่มีชื่อเดียวกัน:
#รวมถึงใช้เนมสเปซมาตรฐาน ;
นานาชาติ ก = สิบห้า ;
นานาชาติ หลัก ( )
{
นานาชาติ ก = 35 ;
ศาล << 'ค่าของตัวแปรส่วนกลาง a คือ' << :: ก << จบ ;
ศาล << 'ค่าของตัวแปรโลคัล a คือ' << ก << จบ ;
กลับ 0 ;
}
ในโค้ดข้างต้น ตัวแปรที่อยู่นอกฟังก์ชันหลักคือ ตัวแปรทั่วโลก และตัวแปร a ภายในฟังก์ชันหลักคือ the ตัวแปรท้องถิ่น ที่มีชื่อเดียวกับตัวแปรส่วนกลาง ในคำสั่งศาล เราได้ใช้ตัวดำเนินการแก้ไขขอบเขตเพื่อพิมพ์ตัวแปรส่วนกลาง ก .
เอาต์พุต
3: กำหนดฟังก์ชันนอกชั้นเรียน
ใน C++ คุณสามารถกำหนดฟังก์ชันคลาสนอกนิยามคลาสได้ และสามารถทำได้โดยใช้ ตัวดำเนินการแก้ไขขอบเขต (::) เพื่อระบุว่าฟังก์ชันนี้เป็นของคลาสใด สิ่งนี้จำเป็นเนื่องจากฟังก์ชันถูกกำหนดนอกขอบเขตของคลาส
นี่คือตัวอย่างโค้ดที่สาธิตการใช้งานของ ตัวดำเนินการแก้ไขขอบเขต :
#รวมถึงใช้เนมสเปซมาตรฐาน ;
คลาส myClass {
สาธารณะ :
เป็นโมฆะ ฟังก์ชั่นของฉัน ( ) ;
} ;
เป็นโมฆะ ห้องเรียนของฉัน :: ฟังก์ชั่นของฉัน ( ) {
ศาล << 'myfunction() เรียก !' ;
}
นานาชาติ หลัก ( )
{
myClass classObj ;
classObj. ฟังก์ชั่นของฉัน ( ) ;
กลับ 0 ;
}
ในโค้ดข้างต้น ฟังก์ชันสมาชิก ฟังก์ชั่นของฉัน () ถูกกำหนดนอกชั้นเรียนโดยใช้ ตัวดำเนินการแก้ไขขอบเขต :: เพื่อระบุว่า ฟังก์ชั่นของฉัน () เป็นของคลาส myClass
เอาต์พุต
4: เข้าถึงสมาชิกคงที่ของชั้นเรียน
ใน C++ เมื่อมีสมาชิกสแตติกและตัวแปรโลคัลที่มีชื่อเดียวกันอยู่ในคลาส ตัวดำเนินการแก้ไขขอบเขต (::) สามารถใช้เพื่อเข้าถึงสมาชิกคงที่ของชั้นเรียน สิ่งนี้ทำให้โปรแกรมสามารถแยกความแตกต่างระหว่างตัวแปรโลคัลและสมาชิกแบบคงที่
นี่คือตัวอย่างโค้ดที่เกี่ยวข้องกับการใช้ ตัวดำเนินการแก้ไขขอบเขต สำหรับกรณีดังกล่าว:
#รวมถึงใช้เนมสเปซมาตรฐาน ;
คลาส myClass {
สาธารณะ :
คงที่ นานาชาติ myStatVar ;
} ;
นานาชาติ ห้องเรียนของฉัน :: myStatVar = 5 ;
นานาชาติ หลัก ( ) {
นานาชาติ myStatVar = 10 ;
ศาล << 'ตัวแปรท้องถิ่น myStatVar: ' << myStatVar << จบ ;
ศาล << 'คลาสตัวแปร myStatVar: ' << ห้องเรียนของฉัน :: myStatVar << จบ ;
กลับ 0 ;
}
โปรแกรมข้างต้นกำหนดคลาสก่อน ห้องเรียนของฉัน ด้วยตัวแปรสมาชิกคงที่ myStatVar . จากนั้นกำหนดตัวแปรโลคัลที่มีชื่อเดียวกันภายในฟังก์ชันหลักของโปรแกรม ในการเข้าถึงตัวแปรคลาส ตัวดำเนินการแก้ไขขอบเขต (::) ใช้กับชื่อคลาส ห้องเรียนของฉัน . โปรแกรมส่งออกค่าของตัวแปรทั้งสองไปยังคอนโซล
เอาต์พุต
5: ใช้กับหลายมรดก
เดอะ ตัวดำเนินการแก้ไขขอบเขต (::) ยังใช้เพื่อระบุเวอร์ชันของสมาชิกที่จะใช้เมื่อคลาส C++ ได้รับมาจากคลาสพาเรนต์หลายคลาสที่มีตัวแปรสมาชิกหรือฟังก์ชันที่มีชื่อเดียวกัน เราสามารถแยกความแตกต่างระหว่างรุ่นต่างๆ ของสมาชิกตัวเดียวกันได้โดยใช้ ตัวดำเนินการแก้ไขขอบเขต ตามด้วยชื่อคลาสหลักและชื่อสมาชิก
#รวมถึงใช้เนมสเปซมาตรฐาน ;
ชั้นผู้ปกครอง1 {
สาธารณะ :
เป็นโมฆะ พิมพ์ ( ) {
ศาล << 'นี่คือฟังก์ชันการพิมพ์ของคลาส Parent1' << จบ ;
}
} ;
ชั้น Parent2 {
สาธารณะ :
เป็นโมฆะ พิมพ์ ( ) {
ศาล << 'นี่คือฟังก์ชันการพิมพ์ของคลาส Parent2' << จบ ;
}
} ;
คลาส myClass : ผู้ปกครองสาธารณะ1 , ผู้ปกครองสาธารณะ2 {
ส่วนตัว :
นานาชาติ ในหนึ่ง ;
สาธารณะ :
ห้องเรียนของฉัน ( นานาชาติ น ) {
ในหนึ่ง = น ;
}
เป็นโมฆะ พิมพ์ ( ) {
ผู้ปกครอง1 :: พิมพ์ ( ) ; // เรียกใช้ฟังก์ชันการพิมพ์ของ Parent1
ผู้ปกครอง2 :: พิมพ์ ( ) ; // เรียกใช้ฟังก์ชันการพิมพ์ของ Parent2
ศาล << 'ค่าของตัวเลขคือ: ' << ในหนึ่ง << จบ ; // พิมพ์ค่าของ num
}
} ;
นานาชาติ หลัก ( ) {
myClass obj ( 42 ) ; // สร้างวัตถุของ MyClass ด้วย num ที่เริ่มต้นเป็น 42
คัดค้าน พิมพ์ ( ) ; // เรียกใช้ฟังก์ชัน print() ของวัตถุ
กลับ 0 ;
}
โปรแกรมด้านบนนี้แสดงให้เห็นถึงการใช้งานของ ตัวดำเนินการแก้ไขขอบเขต (::) เพื่อแยกความแตกต่างระหว่างฟังก์ชันการพิมพ์ของ ผู้ปกครอง1 และ ผู้ปกครอง2 เมื่อทั้งสองคลาสได้รับการสืบทอดโดย ห้องเรียนของฉัน. โดยการเรียกใช้ฟังก์ชันด้วยตัว ชั้นเรียนผู้ปกครอง ชื่อนำหน้าชื่อฟังก์ชัน เราสามารถกำหนดได้ว่าจะใช้ฟังก์ชันเวอร์ชันใด
เอาต์พุต
บรรทัดล่าง
เดอะ ตัวดำเนินการแก้ไขขอบเขต (::) เป็นส่วนประกอบที่สำคัญใน C++ ที่ใช้ในการเข้าถึงชื่อตัวแปรในระดับขอบเขตต่างๆ โอเปอเรเตอร์มีการใช้งานที่หลากหลาย รวมถึงการเข้าถึงตัวแปรหรือฟังก์ชันในเนมสเปซอื่น การเข้าถึงตัวแปรส่วนกลาง การกำหนดฟังก์ชันภายนอกคลาส การเข้าถึงสมาชิกสแตติกของคลาส และการใช้การสืบทอดหลายรายการ แม้ว่าอาจสร้างความสับสนให้กับนักพัฒนามือใหม่ แต่การทำความเข้าใจเกี่ยวกับ ตัวดำเนินการแก้ไขขอบเขต (::) เป็นสิ่งจำเป็นสำหรับการฝึกเขียนโปรแกรมที่ดี