อะไร :: ทำใน C ++?

Xari Thani C



C++ เป็นภาษาโปรแกรมอเนกประสงค์ที่ให้นักพัฒนามีฟังก์ชันการทำงานที่หลากหลาย หนึ่งในคุณสมบัติที่ใช้บ่อยที่สุดใน C++ คือ ตัวดำเนินการแก้ไขขอบเขต หรือที่เรียกว่า ทวิภาคคู่ (::) . แม้จะเป็นส่วนสำคัญของภาษา แต่ ทวิภาคคู่ โอเปอเรเตอร์อาจสร้างความสับสนให้กับนักพัฒนาหลายคน โดยเฉพาะผู้ที่ยังใหม่กับมัน

ในคู่มือนี้ เราจะดูที่ ตัวดำเนินการเครื่องหมายทวิภาคคู่ (::) ใน 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++ ที่ใช้ในการเข้าถึงชื่อตัวแปรในระดับขอบเขตต่างๆ โอเปอเรเตอร์มีการใช้งานที่หลากหลาย รวมถึงการเข้าถึงตัวแปรหรือฟังก์ชันในเนมสเปซอื่น การเข้าถึงตัวแปรส่วนกลาง การกำหนดฟังก์ชันภายนอกคลาส การเข้าถึงสมาชิกสแตติกของคลาส และการใช้การสืบทอดหลายรายการ แม้ว่าอาจสร้างความสับสนให้กับนักพัฒนามือใหม่ แต่การทำความเข้าใจเกี่ยวกับ ตัวดำเนินการแก้ไขขอบเขต (::) เป็นสิ่งจำเป็นสำหรับการฝึกเขียนโปรแกรมที่ดี