Introducción a C++ (una breve discusión sobre clases y objetos)

1 espacio de nombres

1-1 Definición de espacio de nombres

El propósito de definir un espacio de nombres no es entrar en conflicto con el nombre del identificador. Se pueden definir funciones, variables y tipos en el espacio de nombres.

Por ejemplo: rand y strlens aquí son en realidad funciones. En el espacio de nombres, pueden evitar conflictos con la función rand y la función strlens en el ámbito global. En segundo lugar, el espacio de nombres también se puede anidar en definiciones.

Al mismo tiempo, un espacio de nombres define un nuevo alcance. Todo lo que hay en el espacio de nombres está limitado a ese espacio de nombres

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{
	int rand = 10;
	int strlens = 20;
	int Add(int a, int b)
	{
		return a + b;
	}
	class bit
	{
		int Sub(int a = 4, int b = 5)
		{
			return b - a;
		};
		double _money;
		float  _lucky;
		int _life;
	namespace character
	{
		char* next;
		int people;
	}
}

1-2 Uso del espacio de nombres

Método 1: agregar nombre de espacio de nombres + calificador de alcance

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{
	int rand = 10;
	int strlens = 20;
	int Add(int a, int b)
	{
		return a + b;
	}
	class bit
	{
		int Sub(int a = 4, int b = 5)
		{
			return b - a;
		};
		double _money;
		float  _lucky;
		int _life;
	}*p;
	namespace character
	{
		char* next;
		int people=10;
	}
}
int main()
{
	cout << bit::character::people<< endl;
	return 0;
}

Método 2: utilizar el uso para presentar un miembro del espacio de nombres

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{
	int rand = 10;
	int strlens = 20;
	int Add(int a, int b)
	{
		return a + b;
	}
	class bit
	{
		int Sub(int a = 4, int b = 5)
		{
			return b - a;
		};
		double _money;
		float  _lucky;
		int _life;
	}*p;
	namespace character
	{
		char* next;
		int people=10;
	}
}
using bit::Add;
int main()
{
	cout << Add(4,5)<< endl;
	return 0;
}

Método 3: utilizar el espacio de nombres para introducir un espacio de nombres

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{
	int rand = 10;
	int strlens = 20;
	int Add(int a, int b)
	{
		return a + b;
	}
	class bit
	{
		int Sub(int a = 4, int b = 5)
		{
			return b - a;
		};
		double _money;
		float  _lucky;
		int _life;
	}*p;
	namespace character
	{
		char* next;
		int people=10;
	}
}
using namespace bit;
using namespace character;
int main()
{
	cout <<people << endl;
	return 0;
}

2 entradas y salidas de C++

La entrada y salida de C++ identificarán automáticamente el tipo, lo cual es muy conveniente. No requiere printf para especificar el tipo de salida como C. En segundo lugar, C++ también necesita incluir archivos de encabezado. Los archivos de encabezado necesarios para el flujo de entrada cout y el flujo de salida cin son #include<iostream>,<< es el operador de inserción de flujo, >> es el operador de extracción de flujo, std es el nombre del espacio de nombres de la biblioteca estándar de C++ y C++ coloca la definición y la implementación. de la biblioteca estándar en este espacio de nombres.

3 parámetros predeterminados

La función llamada puede no tener parámetros o los parámetros pueden ser predeterminados. A continuación se muestran algunos ejemplos:

void fun(int a = 10)
{
	cout << a << endl;
}
int main()
{
	fun(2);
	fun();
	return 0;
}

Cuando hay varios parámetros, los valores predeterminados no se pueden separar y los valores predeterminados solo pueden ser consecutivos de derecha a izquierda.

int fun(int a = 10,int b=6,int c = 8)
{
	return a + b + c;
}
int main()
{
	cout << fun(2, 4) << endl;
	cout << fun(4, 4, 4) << endl;
	cout << fun(5) << endl;
	fun(5);
	return 0;
}

4 sobrecarga de funciones

En otras palabras, puedo usar el mismo nombre de función pero diferentes tipos de parámetros. El compilador identificará automáticamente los tipos de parámetros de función y los combinará en consecuencia.

int fun(int a = 10,int b=6,int c = 8)
{
	return a + b + c;
}
void fun(char* p, char a, int b)
{
	cout << p << endl;
	cout << a << endl;
	cout << b << endl;
}
int main()
{
	char arr[15] = "I love China!";
	cout << fun(2, 4) << endl;
	fun(arr, 65, 4);
	return 0;
}

5 citas

Citar también equivale a tomar un alias, por ejemplo, su nombre también tiene un apodo y un nombre importante.

La variable referenciada es en realidad la variable misma. En sintaxis, la referencia es que el alias y el nombre original comparten el mismo espacio.

Pero la lógica subyacente es diferente: la lógica subyacente son los indicadores.

int main()
{
	int a = 10;
	int& b = a;
	b = 100;
	cout << a << endl;
	
	return 0;
}

6 número de función interna

Las funciones en línea son en realidad una forma de intercambiar espacio por tiempo. La función en línea se expandirá en el lugar donde se llama sin abrir un marco de pila de funciones, lo que mejora la eficiencia de ejecución del programa. Sin embargo, si el espacio de su línea en línea La función es grande, será muy difícil, si es grande, el compilador automáticamente desdefinirá su línea.

Modificación de palabras clave: en línea

Puede ver que el siguiente código ensamblador no abre en absoluto un marco de pila para la función divertida, simplemente se llama.

Supongo que te gusta

Origin blog.csdn.net/2301_79811170/article/details/135001954
Recomendado
Clasificación