Używam deklaracji „using” w C ++, aby dodać std :: string i std :: vector do lokalnej przestrzeni nazw (aby zaoszczędzić wpisywanie niepotrzebnych „std ::”).
using std::string;
using std::vector;
class Foo { /*...*/ };
Jaki jest zakres tej deklaracji? Jeśli zrobię to w nagłówku, czy wstrzyknie te deklaracje „using” do każdego pliku cpp, który zawiera nagłówek?
usingdeklarację (a fortiori dyrektywa ) w nagłówku w ogóle , nawet w obrębie przestrzeni nazw! Zobacz zakres używania deklaracji w przestrzeni nazw dla problemów, które powoduje.
usingw zakresie klas i funkcji jest bezpieczne w omawianym problemie.
usingdeklaracji (lubusingdyrektywy) w zakresie pliku w dołączonym pliku / nagłówku! To spowoduje ból głowy u użytkowników nagłówka.