C++ | Plantillas | Pregunta 2

¿Predecir la salida?

#include <iostream>
using namespace std;
  
template <typename T>
void fun(const T&x)
{
    static int count = 0;
    cout << "x = " << x << " count = " << count << endl;
    ++count;
    return;
}
  
int main()
{
    fun<int> (1); 
    cout << endl;
    fun<int>(1); 
    cout << endl;
    fun<double>(1.1);
    cout << endl;
    return 0;
}

(A)

x = 1 count = 0

x = 1 count = 1

x = 1.1 count = 0

(B)

x = 1 count = 0

x = 1 count = 0

x = 1.1 count = 0

(C)

x = 1 count = 0

x = 1 count = 1

x = 1.1 count = 2

(D) Respuesta de error del compilador

: (A)
Explicación: el compilador crea una nueva instancia de una función de plantilla para cada tipo de datos. Entonces, el compilador crea dos funciones en el ejemplo anterior, una para int y otra para double. Cada instancia tiene su propia copia de la variable estática. La instancia int de la función se llama dos veces, por lo que el conteo se incrementa para la segunda llamada.
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *