Что такое using namespace std
?
Я хотел бы получить объяснение в терминах Layman.
Что такое using namespace std
?
Я хотел бы получить объяснение в терминах Layman.
std
(где объявлены функции стандартной библиотеки С++, такие как string
или vector
).После написания этой команды, если компилятор видит string
, он будет знать, что вы можете ссылаться на std::string
, и если он видит vector
, он будет знать, что вы можете ссылаться на std::vector
. (При условии, что вы включили в свой блок компиляции файлы заголовков, где они определены, конечно.)
Если вы его не пишете, когда компилятор видит string
или vector
, он не будет знать, о чем вы ссылаетесь. Вам нужно будет явно указать его std::string
или std::vector
, а если этого не произойдет, вы получите ошибку компиляции.
Когда вы совершаете вызов using namespace <some_namespace>;
, все символы в этом пространстве имен становятся видимыми без добавления префикса пространства имен. Символом может быть, например, функция, класс или переменная.
например. если вы добавите using namespace std;
, вы можете написать только cout
вместо std::cout
при вызове оператора cout
, определенного в пространстве имен std
.
Это несколько опасно, потому что пространства имен предназначены для избежания коллизий имен и написания using namespace
вы оставляете некоторый код, но теряете это преимущество. Лучшей альтернативой является использование только определенных символов, что делает их видимыми без префикса пространства имен. Например:
#include <iostream>
using std::cout;
int main() {
cout << "Hello world!";
return 0;
}