¿Cuándo necesita C++ ingresar el comando use std::cout use debajo del archivo de encabezado?
1. La palabra clave está mal escrita, se usa, no se usa.
2. Hay dos usos del uso, uno es la directiva de uso, como usar el espacio de nombres std;; el otro es la declaración de uso, como usar std::cout.
3. Después de la declaración de uso, no es necesario agregar un prefijo de espacio de nombres antes de usar el nombre. Por ejemplo, si std::cout no se declara con el uso, puede ocurrir un error de compilación de identificador indefinido si cout se usa directamente, porque el compilador piensa que std::cout y cout son dos nombres diferentes, y std::cout es declarado, por lo tanto, se puede citar. Si no se declara que cout se cita directamente, se viola la regla de "declarar primero y luego citar".
4. La función de la directiva de uso es introducir todos los nombres declarados en el espacio de nombres, lo que equivale a usar una declaración de uso para cada nombre declarado en el espacio de nombres utilizado, como usar el espacio de nombres std; la suma de usar std::cout; y todas las demás declaraciones del formulario "using std::name;", siempre y cuando este espacio de nombres haya sido declarado en el archivo de encabezado u otros lugares antes, como cout, cin, max. y otros nombres, siempre que se incluya el archivo de encabezado correspondiente (que contenga declaraciones como std::cout, std::cin, std::max, etc.), se puede citar directamente sin agregar std:: delante.
4. El alcance del nombre introducido mediante declaraciones e instrucciones comienza desde el uso, y el final está relacionado con la ubicación del uso dentro de una función, es hasta el final de la función y dentro de una. bloque de declaración, es la declaración Fin, globalmente es el final de la unidad de compilación (archivo fuente). Tenga en cuenta que los archivos de encabezado se incluyen individualmente al compilar cada unidad de compilación. Usar el uso en el alcance global de un archivo fuente solo afectará el archivo fuente en sí; usarlo en el alcance global de un archivo de encabezado afectará a todos los archivos fuente que contengan este archivo de encabezado. Por lo tanto, es más probable que el uso (especialmente el uso de directivas) utilizados en archivos de encabezado cause contaminación del espacio de nombres, lo que puede causar errores inexplicables como la redefinición.
5. La conclusión es intentar no utilizar el uso en el alcance global del archivo de encabezado a menos que se garantice que el archivo de encabezado solo esté incluido en un archivo fuente, pero entonces no es necesario que exista el archivo de encabezado (escribir el código directamente en el archivo fuente es más conveniente).
6. Puede utilizar el uso en el archivo fuente, pero es mejor no declarar una entidad con el mismo nombre que el nombre utilizado. Esto provocará ambigüedad (un caso extremo de contaminación del espacio de nombres). , debe dejarlo claro. Los prefijos de espacios de nombres como std:: son inútiles o simplemente no se utilizan. Por ejemplo, /question/178309120.html usa el espacio de nombres std; y luego define la función de intercambio de plantilla. Como resultado, se produce un error de compilación durante el análisis de la plantilla. En este momento, debe usar ::swap para especificar el intercambio en el espacio de nombres global personalizado y usar std::swap para especificar el intercambio en la biblioteca estándar. No es tan conveniente como no usarlo.
====
[Grupo de respuesta original]