using
和using namespace
是非常非常有用的渲染代碼更易讀 - 除去雜波。
但是,在任何情況下,如果它很難找出符號來自哪裏,我會拒絕導入它的整個名稱空間。
我嘗試limiit進口的命名空間的範圍:
void bar() {
// do stuff without vector
{ using std::vector;
// do stuff with vector
}
// do stuff without vector
}
對於「一般稱爲」庫,例如std
,我就敢用using namespace std
。有理由相信讀這個代碼的每個人都知道這些符號。
作爲旁註,using
關鍵字還用於指示派生類還導出其超類的重載成員。
class A {
void f(A );
void f(bool);
};
class B : public A {
using A::f; // without this, we get a compilation error in foo()
void f(bool);
};
void foo() {
B b;
b.f(A()); // here's a compilation error when no `using` is used in B
}
它沒有傷害,直到有你,因爲你指定的命名空間上明確地錯過了一個模板特殊化。我必須承認我也是這樣做的,但是從閱讀Meyer的「Effective C++」開始,我更加有意識地思考了這一點。 – paxos1977 2008-10-18 14:30:50
這只是真正的問題,對我來說在實踐中最小和最大的問題,進一步通過MS頭部屠殺也做了#define分鐘和最大 – paulm 2014-09-05 19:28:16