Capítulo 2 Plantilla de clase: 2.11 Resumen

2.11 Resumen

2.11 Resumen

 

  • Una plantilla de clase es una clase que se implementa con uno o más parámetros de tipo abiertos.

   Una plantilla de clase es una clase con las siguientes propiedades: En la implementación de una clase, uno o más parámetros de tipo pueden no especificarse.

  • Para usar una plantilla de clase, pasa los tipos abiertos como argumentos de plantilla. La plantilla de clase se instancia (y compila) para estos tipos.

   Para usar la plantilla de clase, puede pasar los tipos que no se han especificado como los parámetros reales de la plantilla; luego el compilador creará una instancia de la plantilla de clase en función del tipo.

  • Para las plantillas de clase, solo se instancian las funciones miembro que se llaman.

   Para las plantillas de clase, solo se crearán instancias de las funciones miembro que se llaman.

  • Puede especializar plantillas de clase para ciertos tipos.

  Las plantillas de clase se pueden especializar con un tipo específico.

  • Puede especializar parcialmente las plantillas de clase para ciertos tipos.

  Puede usar un cierto tipo de plantilla de clase de especialización local.

  • Desde C ++ 17, los argumentos de plantilla de clase pueden deducirse automáticamente de los constructores.

  A partir de C ++ 17, los argumentos de la plantilla de clase pueden derivarse automáticamente del constructor.

  • Puede definir plantillas de clase agregadas.

  Puede definir una plantilla de clase de agregación

  • Parámetros de llamada de una caída de tipo de plantilla si se declara que se llama por valor.

  Al declarar parámetros de paso por valor, los tipos de parámetros formales del tipo de plantilla se degenerarán (decaerán).

  • Las plantillas solo se pueden declarar y definir en el ámbito global / del espacio de nombres o dentro de las declaraciones de clase.

  Las plantillas solo se pueden declarar y definir dentro del alcance global / del espacio de nombres o la declaración de clase.

 

1. C ++ 17 introdujo la deducción de plantillas de argumentos de clase, que permite omitir los argumentos de plantillas si pueden derivarse del constructor. Esto se discutirá en la Sección 2.9 en la página 40.

1. C ++ 17 introduce la derivación de argumentos de plantilla de clase.Si pueden inferir del constructor, se puede omitir argumentos de plantilla. Esto se discutirá en la sección 2.9 en la página 40.

 

2. Es una entidad con plantilla, consulte la Sección 12.1 en la página 181.

2. Es una entidad con plantilla, consulte la sección 12.1 en la página 181.

 

3. Usando la palabra typedef en lugar de "type definition" en intencional. La palabra clave typedef originalmente estaba destinada a sugerir "definición de tipo". Sin embargo, en C ++, "definición de tipo" realmente significa algo más (por ejemplo, la definición de una clase o tipo de enumeración). En cambio, un typedef debería ser considerado como un nombre alternativo (un "alias") para un tipo existente, que puede ser hecho por un typedef.

3. Use intencionalmente la palabra typedef en lugar de "type definition". La palabra clave typedef originalmente sugería "definición de tipo". Sin embargo, en C ++ "definición de tipo" en realidad significa algo más (por ejemplo, la definición de una clase o tipo enumerado). En cambio, typedefs debería considerarse nombres alternativos ("alias") para los tipos existentes, que pueden definirse mediante typedefs.

 

4. Las plantillas de alias a veces (incorrectamente) se denominan plantillas typedef porque cumplen el mismo rol que un typedef tendría si pudiera convertirse en una plantilla.

4. Las plantillas de alias a veces (incorrectamente) se llaman plantillas typedef. Porque juegan el mismo papel que typedef (si se puede generar una plantilla).

 

5. El nombre de tipo es necesario aquí porque el miembro es un tipo. Consulte la Sección 5.1 en la página 67 para más detalles.

5. Si el miembro de la clase es un tipo, se debe agregar typename (para obtener más detalles, consulte la sección 5.1 en la página 67).

 

6. Aún peor, hay un constructor de vectores que toma un argumento integral como tamaño inicial, de modo que para una pila con el valor inicial 5, el vector obtendría un tamaño inicial de cinco elementos cuando se usa: elems (elem).

6. Para empeorar las cosas, el vector tiene un constructor con un parámetro entero, que se utiliza para inicializar el tamaño del vector. Por lo tanto, para una pila con un valor inicial de 5, cuando use elems (elem), obtendrá un vector con un tamaño de 5 elementos.

Supongo que te gusta

Origin www.cnblogs.com/5iedu/p/12709820.html
Recomendado
Clasificación