Почему мне нужно использовать «using namespace std» вместо «using std :: cout»? - PullRequest
0 голосов
/ 21 июня 2020

каждому. Я узнал, что часто желательно писать в своих кодах, используя std::cout вместо using namespace std, чтобы избежать конфликтов пространства имен. В следующем скрипте я использую только cout, и если я напишу std :: cout вместо использования пространства имен std; это не работает. Может ли кто-нибудь помочь мне понять, почему? В общем, когда std::cout не работает, и я вынужден использовать using namespace std?



#include <iostream>
#include <string>
using std::cout; //if writing here "using namespace std;" instead, the code does not work

class MyClass{
public:
    string name;
    MyClass (string n)
    {
        name=n;
        cout<<"Hello "<<name;
    }
};


int main()
{
    MyClass MyObj("Mike");

return 0;
}

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

Вам нужно добавить using std::string; вместе с using std::cout;, чтобы он работал, поскольку вы не только используете cout из пространства имен std , string также является членом namespace std, который вы используются в вашем коде.

1 голос
/ 21 июня 2020

Ваш код нормально работает с оператором:

using std::cout;

для cout, но компилятор должен знать местоположение string (на самом деле это std::string), который вы сейчас используете. Вы должны определить:

using std::string;

Когда вы вводите:

using namespace std;

Он вызывает все пространство имен, называемое std, которое содержит множество функций, добавленных как стандартная библиотека C ++, и вам не нужно использовать префикс std:: для те функции / классы / переменные этого пространства имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...