Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Bienvenidos a todos al blog de Pirate Cat Ou——
Después de un largo descanso, ¡sigamos estudiando mucho!
Tabla de contenido
1.espacio de nombres espacio de nombres
El valor de existencia del espacio de nombres:
Definición del espacio de nombres:
2.Funciones de entrada y salida de C ++
En C/C++, hay una gran cantidad de variables, funciones y clases que se aprenderán más adelante. Los nombres de estas variables, funciones y clases existirán en el ámbito global, lo que puede causar muchos conflictos.El propósito de utilizar espacios de nombres es localizar los nombres de los identificadores para evitar conflictos de nombres o contaminación de nombres. La palabra clave namespace parece solucionar este problema.
En resumen, cuando hay múltiples variables con el mismo nombre en el mismo proyecto, se pueden evitar conflictos de nombres o contaminación de nombres, y también facilitar la distinción. Se puede decir que es indispensable en el desarrollo de proyectos a gran escala.
El espacio de nombres es la palabra clave del espacio de nombres. Agregue el nombre del espacio de nombres después de la palabra clave y agregue {} para limitar el alcance.
namespace hdmo { int a = 1; }Aviso: No es necesario agregar ' ; ' después del último ' } ' del espacio de nombres, que es diferente de una estructura y similar a una función.
La esencia de un espacio de nombres es que creamos un dominio que es independiente del alcance global. Al igual que cada función tiene un alcance, el alcance de los parámetros en cada función está dentro del alcance de la función.Lo mismo ocurre con los espacios de nombres.El alcance de las funciones, variables, etc. en el espacio de nombres está dentro del alcance limitado del espacio de nombres y debe usarse llamando al espacio de nombres., pero cabe señalar queLas variables de función en el espacio de nombres, etc., tienen un ciclo de vida global.
El espacio de nombres solo se puede definir en el ámbito global y también se puede anidar.
En el mismo proyecto, los espacios de nombres con el mismo nombre se considerarán el mismo espacio de nombres.
namespace hdmo { int a = 1; } namespace hdmo { int b = 1; }En este momento, los dos hdmo representan el mismo espacio de nombres.
La biblioteca estándar de C++ se almacena en el espacio de nombres llamado std (estándar) para evitar conflictos con funciones en otros lenguajes. Es por eso que los programas de C++ básicamente contienen un.
using namespace std;
Solo para incluir la biblioteca estándar de C++.
Dado que un espacio de nombres es un dominio, si desea utilizar sus variables de función y otros contenidos externamente, debe utilizar un operador como una estructura para lograr esta operación.
El operador de llamada de un espacio de nombres son dos dos puntos::
#include <stdio.h> namespace hdmo { int a = 1; } int a = 2; int main() { printf("%dn", a); printf("%dn", ::a); printf("%dn", hdmo::a); return 0; }
A partir de los resultados de salida, podemos saber que: cuando el frente de :: está vacío, las variables del alcance global se llaman de forma predeterminada.
Hay tres formas de utilizar variables, funciones, etc. en el espacio de nombres:
1.acceso único: Use :: para acceder individualmente a variables o funciones en un espacio de nombres, que es la forma más segura de usarlo;
2.Expansión única : Utilice el uso para expandir una variable o función sola. Después de la expansión, su alcance se convierte en el alcance global y ya no está restringido por el espacio de nombres. Se recomienda utilizar este método en condiciones comunes sin conflicto.
3.Totalmente ampliado: Expande directamente todos los espacios de nombres especificados. No se recomienda su uso en proyectos. El riesgo de conflicto es alto y se puede usar en programas pequeños (la biblioteca estándar de C ++ está completamente expandida, por lo que cuando usamos cin y cout). , No es necesario anteponer el prefijo std::)
En lenguaje C, nuestras declaraciones de entrada y salida son scanf y printf respectivamente. C++ también es compatible con las declaraciones de entrada y salida del lenguaje C, pero también tiene sus propias funciones de entrada y salida, a saber, cin y cout.
Para utilizar las funciones cin y cout, debe incluir<iostream>Biblioteca de flujo de entrada y salida estándar, y debe incluir la biblioteca de funciones estándar de C++
- #include <iostream>
- using namespace std;
Cuando use cin, use '>>' para ingresar;
Cuando use cout, use '<<' para generar.
<< es el operador de inserción de flujo, >> es el operador de extracción de flujo (<< y >> también representan operadores de desplazamiento a la izquierda y a la derecha en lenguaje C)
- #include <iostream>
- using namespace std;
- int main()
- {
- int a = 0;
- cin >> a;
- cout << a << endl;
- printf("%dn", a);
- return 0;
- }
Primero podemos entender simplemente endl como un salto de línea 'n'; no explicaremos demasiado sobre la parte básica y la agregaremos en estudios futuros.
Podemos ver en el código anterior que cin y cout no usan %d, %c, etc. como scanf y printf para controlar el formato de entrada y salida de las variables.cin y cout pueden identificar automáticamente los tipos de variables y datos, que es un lugar relativamente conveniente.
En el entorno VS2022, el código anterior no contiene<stdio.h> , también puedes usar las funciones scanf y prinf, porque en VS<iostream>incluido indirectamente<stdio.h>, por lo que se puede utilizar directamente, pero es posible que sea necesario incluirlo en otros entornos de compilación.<stdio.h> .
Cuando desee lograr operaciones como la precisión del control, se recomienda utilizar directamente los métodos de entrada y salida del lenguaje C. Será más problemático implementar esta operación en C ++.
Cabe señalar que scanf y printf son más rápidos que cin y cout. En la competencia, scanf y printf se pueden usar directamente en el problema del tiempo de ejecución atascado. El siguiente código puede mejorar la eficiencia de cin y cout, pero este artículo No. explicación todavía.
- #include <iostream>
- using namespace std;
- int main()
- {
- // 在io需求⽐较⾼的地⽅,如部分⼤量输⼊的竞赛题中,加上以下3⾏代码
- // 可以提⾼C++IO效率
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- return 0;
- }
Los parámetros predeterminados sirven para dar a los parámetros de la función un valor predeterminado al declarar o definir una función. Cuando llamamos a la función, si el parámetro predeterminado no pasa un valor, se utilizará el valor predeterminado definido. Si se pasa un valor, se usará el valor pasado. se utilizará el valor.
Los parámetros predeterminados se dividen en predeterminados completos y semipredeterminados; predeterminados completos significa que todos los parámetros formales reciben valores predeterminados, y semipredeterminados significa que algunos parámetros formales reciben valores predeterminados. Y C ++ estipula que los parámetros semipredeterminados deben establecerse de forma predeterminada consecutivamente de derecha a izquierda y no pueden saltar a los valores predeterminados a intervalos.
- #include <iostream>
- using namespace std;
- namespace hdmo
- {
- //全缺省
- int Fun1(int x = 0, int y = 0)
- {
- return x + y;
- }
- //半缺省
- int Fun2(int x, int y = 0)
- {
- return x + y;
- }
- }
-
- int main()
- {
- cout << hdmo::Fun1() << endl;//全缺省可以不传参
- cout << hdmo::Fun1(1) << endl;
- cout << hdmo::Fun1(1,1) << endl;
- /*
- cout << hdmo::Fun2() << endl;//半缺省不能不传参
- */
- cout << hdmo::Fun2(2) << endl;
- cout << hdmo::Fun2(2,2) << endl;
- return 0;
- }
El resultado del código anterior es:
El semi-predeterminado debe garantizar la definición y continuidad de los parámetros predeterminados de derecha a izquierda, con los parámetros normales a la izquierda y los parámetros predeterminados a la derecha.
La sobrecarga de funciones significa que hay varias funciones con el mismo nombre de función al mismo tiempo. El mismo nombre de función representa varias funciones al mismo tiempo, lo que es una sobrecarga.
La diferencia entre ellos está determinada por el tipo y número de parámetro y no tiene nada que ver con el tipo de valor de retorno.No se pueden sobrecargar dos funciones con el mismo nombre que solo tienen diferentes tipos de valores de retorno。
- #include <iostream>
- using namespace std;
- namespace hdmo
- {
-
- int Add(int x, int y)
- {
- return x + y;
- }
- double Add(double x, int y)
- {
- return x + y;
- }
- double Add(int x, double y)
- {
- return x + y;
- }
- double Add(double x, double y)
- {
- return x + y;
- }
- }
- int main()
- {
- using hdmo::Add;
- cout << Add(1, 1) << endl;
- cout << Add(1.1, 1) << endl;
- cout << Add(1, 1.1) << endl;
- cout << Add(1.1, 1.1) << endl;
- return 0;
- }
El resultado es:
Del código anterior, podemos ver que el uso de la sobrecarga puede hacernos usar funciones de manera más conveniente. En lenguaje C, para lograr el efecto anterior, necesitamos usar cuatro nombres de funciones diferentes para definir cuatro funciones y usarlas de manera diferente cuando se usan. Con la sobrecarga en C ++, podemos unificar todas las funciones de suma, ya que no es necesario distinguir un nombre. cuando lo use, úselo directamente, lo cual es muy conveniente.
Este artículo sobre los conceptos básicos para comenzar con C ++ terminará aquí. Más adelante continuaremos explicando otros conocimientos básicos. Bienvenidos a todos a que sigan viniendo y dándonos consejos.
Si tienes alguna deficiencia, ¡puedes señalarla en mensajes privados o en el área de comentarios!
Página principal:Blog del Gato Pirata Ou-CSDN
¡Aquí está la pequeña gaviota! Nos vemos la próxima vez~(*¯︶¯*)~