Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

คุณจะเปรียบเทียบเนมสเปซใน Python และ C ++ อย่างไร


เนมสเปซใน Python และ C++ ไม่สามารถเปรียบเทียบได้จริงๆ ตัวอย่างเช่น ใน C++ −

// a.h
namespace ns {
    struct A { .. };
    struct B { .. };
}

ถ้าเราจะทำสิ่งนี้ −

#include "a.h"
using ns::A;

จุดประสงค์ของโค้ดนั้นคือสามารถเขียน A ได้อย่างไม่มีเงื่อนไข (เช่น ไม่ต้องเขียน ns::A) ตอนนี้ คุณอาจพิจารณาว่าเทียบเท่ากับหลามเป็น −

from a import A

แต่ไม่ว่าการใช้งานจะเป็นอย่างไร ส่วนหัว ah ทั้งหมดจะยังคงถูกรวมและคอมไพล์ ดังนั้นเราจะยังสามารถเขียน ns::B ได้ ในขณะที่เวอร์ชัน Python นั้น a.B จะไม่ปรากฏให้เห็น เวอร์ชัน C++ อื่นๆ

using namespace ns;

ยังไม่มีอนาล็อก Python มันนำชื่อทั้งหมดจากเนมสเปซ ns มาตลอดทั้งโค้ดเบสทั้งหมด และสามารถใช้เนมสเปซซ้ำได้ ตัวอย่างเช่น

#include <vector>
#include <map>
#include <algorithm>
using namespace std; // bring in EVERYTHING

บรรทัดนั้นเทียบเท่ากับ −

from vector import *
from map import *
from algorithm import *

อย่างน้อยก็ในสิ่งที่ทำ แต่จริง ๆ แล้วมันก็นำเฉพาะสิ่งที่อยู่ในเนมสเปซ std เท่านั้นซึ่งไม่จำเป็นต้องเป็นทุกอย่าง


No