Notas gramaticales de C++11

inserte la descripción de la imagen aquí

1. Nuevas funciones miembro predeterminadas en la clase: mover asignación y mover construcción

inserte la descripción de la imagen aquí

2. expresión lambda

inserte la descripción de la imagen aquí

3. Envoltorio

inserte la descripción de la imagen aquí

función de enlace

inserte la descripción de la imagen aquí

Cuatro, especificación de conversión de tipo C++

  • En lenguaje C,tipo similarpuede suceder entreconversión de tipo implícita(como doubley int),no está cercaperocompatibleentre tipos deMostrar elencos(como punteros y tipos de números enteros)
  • La visibilidad de la conversión de tipos en lenguaje C no es fuerte, es fácil provocar un comportamiento anormal del programa y es difícil de depurar, por lo que C++ regula el comportamiento de conversión de tipos en los requisitos del programa.en forma de llamada a funciónMarcar explícitamente las conversiones de tipo

C ++ cuatro tipos de conversión

inserte la descripción de la imagen aquí

  • dynamic_castcomúnmente utilizado enllamada a función polimórficamedioDistinguir e identificar objetos padre e hijo., es una conversión de tipo especial exclusiva de C++
  • La conversión de tipos es propensa a errores y debe evitarse tanto como sea posible.

Cinco: palabra clave volátil

  • volátil es unmodificador de tipo(especificador de tipo) Está diseñado para modificarVariables accedidas y modificadas por diferentes hilos..puede volatileinterpretarse comoacceso directo a la dirección de memoria sin formato
  • A veces, para optimizar el código, el compilador realizará algunasacceso a variablesconductaoptimización de compilación especial(Por ejemploAlmacene el valor de una variable en un registro y solo lea la variable del registro cada vez), la palabra clave volatilepuede prohibir que el compiladoracceso a una variableRealice optimizaciones de compilación especiales:
void Test()
{
    
    
	const int a = 2;
	//用const_cast类型转换强制修改变量
	int* p = const_cast<int*>(&a);
	*p = 3;
	cout << a << endl;
}
  • el fragmento de código de arribaen vs2022La salida de la variable aes 2, lo cual se debe a que el compiladorconstacceso a variablesoptimizar (en algunas circunstancias, el compilador puedePoner el valor de una variable constante en un registro.para un acceso rápido), las palabras clave volatilepermiten al compiladorLectura normal de la memoriauna variable:
void Test()
{
    
    
	volatile const int a = 2;
	int* p = const_cast<int*>(&a);
	*p = 3;
	cout << a << endl;
}
  • En este momento, el resultado de salida de la variable aes 3.
  • Cuando una variable está en un programa.Cuando se modifica y lee con frecuenciaDebe volatilemodificarse con palabras clave, escenarios comunes:
    • dispositivo paraleloregistro de hardware
    • En un entorno multiprocesoBanderas compartidas entre hilos, debería agregar volátil
    • interrumpir la rutina del serviciovariables para inspección por otros programas, es necesario agregar volátil
      inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_73470348/article/details/132218029
Recomendado
Clasificación