1. Nuevas funciones miembro predeterminadas en la clase: mover asignación y mover construcción
2. expresión lambda
3. Envoltorio
función de enlace
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
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:
voidTest(){
constint 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:
voidTest(){
volatileconstint 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