Я пытаюсь начать использовать пространства имен правильным (или, по крайней мере, лучшим) способом.
Первое, что я попытался сделать, - это не указывать using namespace xxx;
в начале моих файлов.Вместо этого я хочу using xxx::yyy
как можно локально.
Вот небольшая программа, иллюстрирующая это:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
using std::cout;
using std::endl;
srand(time(0));
for(int i=0; i<10;++i)
cout << rand() % 100 << endl;
return 0;
}
Если я опускаю строки using std::cout;
или using std::endl
,компилятор будет жаловаться, когда я пытаюсь использовать cout
или endl
.
Но почему это не нужно для srand
, rand
и time
?Я почти уверен, что они находятся в std
, потому что, если я попытаюсь специально налить std::
перед ними, мой код работает нормально.