例如,我們有這樣的計劃:如何使用名稱空間的行爲完全相同?
#include <iostream>
namespace a
{
namespace b
{
namespace c
{
int alpha = 5;
}
}
}
int main()
{
using namespace a;
using namespace b;
using namespace c;
std::cout << alpha;
return 0;
}
編譯成功後,我認爲使用命名空間的行爲像UNIX cd
。在我們代碼的第一行中,我們在根::
,然後我們移動到::a
,::a::b
,::a::b::c
。但經過這樣的修改和成功運行,我被驚呆了:
int main()
{
using namespace a;
using namespace b;
using namespace c;
using namespace b;
std::cout << alpha;
return 0;
}
它仍然有效,我們都不是「在b目錄」!
即使是這樣的結構允許...:
namespace a
{
namespace b
{
namespace c
{
int alpha = 5;
}
}
}
namespace b
{
namespace a
{
}
}
void main()
{
using namespace a;
}
解釋,請使用命名空間的行爲!
命名空間與目錄無關。如果你想要一個類似shell的隱喻,那麼別名可能更接近事實。當使用namespace a時,符號'b'成爲':: a :: b'的別名。 –