2016-01-20 2 views
-8

В чем дело с этим кодом на C++?Что такое использование пространства имен std; делать?

Я получаю сообщение об ошибке: что должно быть ; до z, что является неправильным. Единственная часть, которую я не понимаю, - это линия цели 2.

#include <iostream> 
using namespace std; 

int subtraction(int a, int b) 
{ 
    int r; 
    r=a-b; 
    return r; 
} 

int main() 
{ 
    int z; 
    z = subtraction (5,9); 
    cout z; 
} 

Заранее спасибо.

+4

Это не так, как используется 'cout'. – nrussell

+3

Связанный [Почему «использование пространства имен std;» считается плохой практикой?] (Http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) –

+1

Вместо 'int р; r = a-b; 'use initialization:' int r = a-b; '. То же самое для 'z'. –

ответ

3

using namespace std; означает, что вы можете написать cout позже, а не std::cout. Это экономит печатание текста за счет валового загрязнение пространства имен.

Ваша ошибка компиляции может быть исправлен путем записи cout << z;

Кроме того, не возвращает значение из main.

+3

Если в функции 'main' нет явного' return', компилятор добавит 'return 0' в конец. –

+0

Действительно. @JoachimPileborg ссылается на C++ Standard, глава 3.6.1, параграф 5. Yup, вы можете сделать это для 'main()', но не для какой-либо другой функции. – Bathsheba

+0

У меня создалось впечатление, что вызов библиотеки iostream разрешен для использования 'cout', а не' namespace std; '. Если 'namespace std;' - это то, что разрешает 'cout', то что вызывает библиотека iostream? –

0

Что такое использование пространства имен std; do?

Сообщает компилятору, какое пространство классов/имен искать в идентификаторе. Вы либо используете using namespace std; в начале файла, либо должны поместить его перед каждой принадлежащей ему функцией.

В чем дело с этим кодом на C++?

Синтаксис для использования std::cout является:

std::cout << source; 

переменная source вставляется с помощью operator << в std::cout потоке, который печатает его на стандартный вывод, т.е. монитор компьютера.


std"метка" функции члена стандартной библиотеки. Это метод, используемый (помимо других причин) для разрешения (с использованием оператора разрешения ::), входящие в стандартную библиотеку из (возможного) имени, конфликтуют с функциями с похожими (одинаковыми) именами и уменьшают объем поиска. std называется пространством имен, поэтому using namespace std; немного объяснительно.

1

Чтобы начать объяснять, что это значит, важно понять, что такое пространства имен. Пространства имен - это логические единицы кода, разделенные, вы можете создать собственное пространство имен или использовать другие пространства имен. Преимущество использования пространств имен заключается в том, чтобы ваша программа логически разделяла ваш код с помощью подобных функций. Это очень похоже на классы, но вам не нужно инициировать пространства имен, подобные классам. IN Java это будет похоже на пакеты. Чтобы использовать функцию в пространстве имен, вам нужно использовать идентификатор пространства имен, а затем функцию, которую вы вызываете. Это вызовет правильную функцию в области пространства имен, которую вы хотите использовать.Пример создания пространства имен является следующее:

namespace connection 
{ 
int create_connection(); 
int close_connection(); 
//ect....... 
} 

Позже в коде, когда вы хотите позвонить create_connection вам нужно сделать это следующим образом:

connection::create_connection(); 

Что касается вашего ответа вы способный не допускать ввода идентификатора пространства имен в этом случае соединения или в вашем случае std. Вы можете ввести целое пространство имен в раздел кода с помощью директивы using. Это позволит вам вызывать функции, которые находятся в этом пространстве имен, без использования пространства имен, за которым следует индикатор области видимости «::».

следующий синтаксис, чтобы сделать это следующим образом:

using namespace connection: 

или в случае

using namespace std; 

Так, делая это с станд вы будете предоставление, что доступ к станд имен, который включает в себя C++ Объекты ввода-вывода cout и cin использовать свободно, не используя сначала пространство имен и область действия. Хотя лучше использовать ограниченные возможности для элементов пространства имен, которые вы хотите использовать. В больших программах это будет более чистым, почему кодирование, а также избежать нескольких проблем. Чтобы ввести только определенные члены пространства имен, например, только ввод std :: cin и std :: cout, вы делаете следующее:

using std::cin; 
using std::cout; 
+0

Отличный ответ, к сожалению слишком поздно для начального взрыва. Но в любом случае это плюс. – Bathsheba

Смежные вопросы