[Tienda de esencias de C ++] 1. Introducción al espacio de nombres del espacio de nombres de C ++, primera comprensión del flujo estándar de iostream

Tabla de contenido

1. Espacio de nombres

1.1 Definir espacio de nombres

1.2 :: Calificadores de alcance

 1.3 directiva de uso

2. Primer conocimiento de entrada y salida.

2.1 Escritura de secuencia <<

2.2 Extracción de corriente >>

Nota: Ya sea << o >>, el tipo se puede reconocer automáticamente, porque en la biblioteca estándar se definen diferentes versiones de operadores de entrada y salida para manejar estos diferentes tipos de operandos (puede entenderse como sobrecarga de operadores y operador La sobrecarga se discutirá más adelante. Presentaré)


1. Espacio de nombres

        En un proyecto más grande que usa lenguaje c, es muy común definir funciones con el mismo nombre en la cooperación de varias personas, y si estos archivos se incluyen en el mismo archivo, aparecerá un error con el mismo nombre y este problema es También es un problema muy problemático para los trabajadores del lenguaje C, y C ++, como herencia y desarrollo del lenguaje C, también propuso una solución, y nació el concepto de espacio de nombres.

1.1 Definir espacio de nombres

        El espacio de nombres también es lo que a menudo llamamos dominio. Cuando desarrollamos en C ++, generalmente colocamos todas las funciones de un módulo en un espacio de nombres y necesitamos usar la palabra clave espacio de nombres para definir el espacio de nombres. La sintaxis es la siguiente:

namespace zybjs
{
	//
}

        Y el espacio de nombres admite definiciones anidadas, y la prioridad del dominio interno es mayor que la del dominio externo al llamar, de la siguiente manera:

namespace zybjs
{
	void hello()
	{
		std::cout << "zybjs:hello c++";
	};
	namespace zy
	{
		void hello()
		{
			std::cout << "zy:hello c++";

		}

		void test()
		{
			hello();
		}
	}
}
int main()
{
	zybjs::zy::test();
}

 resultado de la operación:

1.2 :: Calificadores de alcance

(1) Llamadas locales

        ::El calificador de alcance de dominio se usa para especificar el espacio de nombres. Por lo general, cuando lo usamos, agregamos el espacio de nombres que queremos especificar al frente y luego podemos llamar a la función en el espacio de nombres correspondiente.

namespace zybjs
{
	void hello()
	{
		std::cout << "zybjs:hello c++"<< std::endl;
	};
	namespace zy
	{
		void hello()
		{
			std::cout << "zy:hello c++" << std::endl;

		}
	}
}
int main()
{
	zybjs::hello();
	zybjs::zy::hello();
}

resultado de la operación: 

 (2) Convocatoria global

        Una llamada global consiste en realidad en llamar a una función en el ámbito global, sin especificar el espacio de nombres, de la siguiente manera:

(El uso del espacio de nombres estándar aquí se llama expansión global, que se presentará a continuación)

using namespace std;
int main()
{
	::cout << "I love c++";
}

 1.3 directiva de uso

(1) Expansión global

        La expansión global es en realidad expandir el contenido del espacio de nombres expandido especificado al dominio global. Cuando se expande al dominio global, podemos llamar directamente al contenido interno sin usar el calificador de alcance de dominio . Sin embargo, después de la expansión, si la función que definimos en el dominio global tiene el mismo nombre, se producirá un error, por lo que generalmente evitamos usar la expansión global en el desarrollo del proyecto real, pero podemos usar la expansión global en nuestra práctica habitual para mejorarnos. .s eficiencia. La sintaxis es la siguiente:

using namespace 域名;

(2) Ampliación parcial

        Debido a que la expansión global nos traerá problemas en el desarrollo del proyecto, pero de hecho hay algunas funciones que a menudo necesitan ser llamadas, en este momento podemos usar la expansión local para expandir una sola función o dominio, de la siguiente manera:

using std::cout;
int main()
{
	cout << "I love c++";
}

2. Primer conocimiento de entrada y salida.

        El lenguaje C++ no define ninguna declaración de entrada y salida (io), pero incluye una biblioteca estándar completa para proporcionar el mecanismo io. Por ejemplo, la biblioteca iostreamm contiene dos tipos básicos istream (flujo de entrada) y ostream (flujo de salida), y se definen cuatro objetos IO en la biblioteca estándar, incluido el objeto iostream cin, el objeto ostream cout , cerr y clog. Dado que cerr y clog no se usan comúnmente, solo necesitamos comprender cin y cout , también conocidos como entrada y salida estándar.

2.1 Escritura de secuencia <<

        En C++, una expresión produce un resultado de cálculo, que generalmente consta de uno o más operandos y uno o más operadores. Y aquí el operador de salida << imprime el mensaje en la salida estándar. El operador << recibe dos operandos, el operando de la izquierda debe ser un objeto ostream y el operando de la derecha es el valor que queremos imprimir.

std::cout << "hello c++\n";

         Cuando lo usamos, encontramos que << se puede imprimir continuamente, como por ejemplo:

std::cout << "hello c++" << std::endl;

Esto se debe a que después de la operación <<, se devolverá un objeto ostream como operando en el lado izquierdo del siguiente operador <<, logrando así una salida continua.

Suplemento: endl

        endl es un valor especial llamado manipulador en C ++. Su función es finalizar la línea actual y vaciar el búfer, y de hecho escribir toda la salida escrita en el flujo de salida en lugar de esperar a que el flujo se escriba en la memoria.

Si desea obtener más información al respecto, puede buscar artículos relacionados en \n \r endl, por lo que no presentaré demasiado aquí.

2.2 Extracción de corriente >>

        >> es similar al operador de salida << en que acepta un objeto istream como operando izquierdo y otro objeto como operando derecho. Extraerá datos de la secuencia del objeto istream de la izquierda, los almacenará en el objeto de la derecha y devolverá un objeto istream al mismo tiempo. Entonces >> también admite extracción y almacenamiento continuos.

int a = 0,b = 0;
cin >> a >> b;

Nota: Ya sea << o >>, el tipo se puede reconocer automáticamente, porque en la biblioteca estándar se definen diferentes versiones de operadores de entrada y salida para manejar estos diferentes tipos de operandos (puede entenderse como sobrecarga de operadores y operador La sobrecarga se discutirá más adelante. Presentaré)

Supongo que te gusta

Origin blog.csdn.net/qq_64293926/article/details/132066891
Recomendado
Clasificación