พิจารณาสถานการณ์เมื่อเรามีบุคคลสองคนที่มีชื่อเดียวกันคือ Piyush ในชั้นเรียนเดียวกัน เมื่อใดก็ตามที่เราต้องการแยกความแตกต่าง เราจะต้องใช้ข้อมูลเพิ่มเติมพร้อมกับชื่อของพวกเขา เช่น พื้นที่นั้นๆ หากพวกเขาอาศัยอยู่ในพื้นที่อื่น หรือชื่อแม่หรือพ่อ เป็นต้น
สถานการณ์เดียวกันอาจเกิดขึ้นในแอปพลิเคชัน C ++ ของคุณ ตัวอย่างเช่น คุณอาจกำลังเขียนโค้ดที่มีฟังก์ชันที่เรียกว่า xyz() และมีไลบรารีอื่นที่มีฟังก์ชัน xyz() เหมือนกัน ตอนนี้คอมไพเลอร์ไม่มีทางรู้เลยว่าคุณกำลังอ้างถึงฟังก์ชัน xyz() เวอร์ชันใดในโค้ดของคุณ
เนมสเปซได้รับการออกแบบมาเพื่อเอาชนะความยากลำบากนี้ และใช้เป็นข้อมูลเพิ่มเติมเพื่อแยกความแตกต่างของฟังก์ชัน คลาส ตัวแปร ฯลฯ ที่คล้ายคลึงกันด้วยชื่อเดียวกันที่มีอยู่ในไลบรารีต่างๆ คุณสามารถใช้เนมสเปซเพื่อกำหนดบริบทที่มีการกำหนดชื่อได้ โดยพื้นฐานแล้ว เนมสเปซจะกำหนดขอบเขต
C++ มีไลบรารีมาตรฐานที่มีฟังก์ชันทั่วไปที่คุณใช้ในการสร้างแอปพลิเคชันของคุณ เช่น คอนเทนเนอร์ อัลกอริธึม ฯลฯ หากชื่อที่ใช้โดยชื่อเหล่านี้ไม่เปิดเผย ตัวอย่างเช่น หากพวกเขากำหนดคลาสคิวทั่วโลก คุณจะไม่สามารถใช้ชื่อเดิมได้อีกโดยไม่มีข้อขัดแย้ง ดังนั้นพวกเขาจึงสร้างเนมสเปซ มาตรฐานเพื่อให้มีการเปลี่ยนแปลงนี้
การใช้คำสั่งเนมสเปซหมายความว่าในขอบเขตที่มีอยู่ ให้ทุกสิ่งภายใต้เนมสเปซ std พร้อมใช้งานโดยไม่ต้องเติมคำนำหน้า std::ก่อนแต่ละรายการ
แม้ว่าแนวทางปฏิบัตินี้จะใช้ได้สำหรับโค้ดตัวอย่างสั้นๆ หรือโปรแกรมที่ไม่สำคัญ แต่การดึงเนมสเปซ std ทั้งหมดลงในเนมสเปซส่วนกลางนั้นไม่ใช่นิสัยที่ดี เนื่องจากขัดต่อจุดประสงค์ของเนมสเปซและอาจนำไปสู่การชนกันของชื่อได้ (แม้ว่าในตอนแรกจะไม่มีการชนกันของชื่อ แต่ก็สามารถเกิดขึ้นได้ในระหว่างการบำรุงรักษาเนื่องจากมีการเพิ่มโค้ด ไลบรารี ฯลฯ ลงในโปรเจ็กต์มากขึ้น) สถานการณ์นี้มักเรียกว่ามลภาวะของเนมสเปซ