Я знаю, что include относится к классам и используется для некоторых встроенных элементов, таких как пространство имен std ... Когда вы включаете что-то, вы можете создавать объекты и играть с ними, но когда вы «что-то» используете, вы можете использовать какие-то встроенные функции. Но тогда как я должен создать свою собственную «библиотеку», которую я мог бы «использовать»?В чем разница между использованием и включением в C++?
ответ
Проще говоря #include
сообщает компилятору, чтобы просто скопировать и вставить содержимое файла заголовка, которое будет включено в текущую блок переводов. Он оценивается предварительным компилятором.
В то время как using directive
направляет компилятор для переноса имен символов из другой области действия в текущую область. Это по сути действует компилятором.
Но как же я должен создать свою собственную «библиотеку», которую я мог бы «использовать»?
Пространства имен - это то, что используется для предотвращения столкновений имен символов. И обычно каждый разработчик библиотеки будет иметь свою функциональность, завернутую в одно или много пространств имен.
«включить» в основном делает копию вставить значение файла в местоположение строки «включить». Это используется для того, чтобы ваш исходный код (как правило, файл .c) знал об объявлении другого исходного кода (обычно он находится в файле .h).
«используя» в основном говорит компилятору, что в следующем коде вы используете что-то (как правило, пространства имен), так что вы не должны делать это явно каждый раз:
Вместо:
std::string a;
std::string b;
std::string c;
Вы могли бы написать:
using namespace std;
string a;
string b;
string c;
Вы могли бы, но не должны. 'using namespace std;' полностью поражает цель пространств имен. Это часто приводит к таинственным проблемам. 'std' есть по какой-то причине. Используй это. –
Да, я знаю это, но все же, какова цель оператора «::» (что это значит?) В этом случае, а также то, что является std, что включает в себя отключение cout, cin и такого рода базовые вещи ? Как я могу поместить некоторые из моих классов в эти пространства имен? – user2030383
@ user2030383: '::' - это оператор разрешения области, который сообщает компилятору, в какой области (* namespace/class/struct/union *) он может найти конкретный символ. Существует много символов, которые являются частью пространства имен 'std',' std' обозначает пространство имен библиотеки * standard *, вам нужно будет увидеть документацию, чтобы точно увидеть, какие все символы определены в ней. Вы не должны помещать свои классы в пространство имен 'std', это неопределенное поведение, если вы это сделаете. Вместо этого вы должны обернуть свои классы в свое собственное пространство имен. –
- 1. В чем разница между импортом и включением в Objective-C?
- 2. В чем разница между включением заголовка и файла на C++?
- 3. В чем разница между требованием и включением в php?
- 4. В чем разница между включением и расширением в Ruby?
- 5. Разница между требованием и включением в php
- 6. разница между включением в файл .h и .c файл
- 7. Разница между протяженностью и включением в Jade
- 8. В чем разница между% и/в C?
- 9. В чем разница между литьем и использованием «как» в C#?
- 10. В чем разница между использованием и внешним?
- 11. Freemarker: разница между включением и импортом?
- 12. В чем разница между GLSL и c?
- 13. В чем разница между C# и .NET?
- 14. В чем разница между b и c?
- 15. В чем разница между «VC++» и «C++»?
- 16. C++ В чем разница между использованием массива и массивом?
- 17. В чем разница между && и &?
- 18. В чем разница между '|| =' и '=' в Ruby
- 19. В чем разница между «./» и «../»?
- 20. В чем разница между ++ i и i ++?
- 21. В чем разница между (++ c) & (C++)?
- 22. В чем разница между «и»?
- 23. В чем разница между `{}` и `[]`?
- 24. В чем разница между == и ===?
- 25. В чем разница между «+» и «\ +»?
- 26. В чем разница между + = и = +?
- 27. В чем разница между/* ... */и/** ... */
- 28. В чем разница между: и +:
- 29. В чем разница между $ {} и # {}
- 30. В чем разница между $ _. и $ _
Оба классов и оба для встроенного материала. – chris