Escriba los parámetros de conversión y tipo de plantilla en las plantillas

Tipo de conversión y parámetros de tipo de plantilla

Al igual que las funciones que no son de plantilla, los parámetros reales que pasamos a la plantilla de la función en una llamada se utilizan para inicializar los parámetros formales de la función. Si el tipo de un parámetro de función usa parámetros de tipo de plantilla, se usan reglas de inicialización especiales. Solo se aplican automáticamente conversiones de tipo centralizadas muy pausadas a estos argumentos. El compilador generalmente no convierte el tipo de parámetro real, pero genera una nueva instancia de plantilla.

Como siempre, la constante de nivel superior se ignorará ya sea en los parámetros formales o en los parámetros reales. En otras conversiones de tipos, los dos elementos siguientes se pueden utilizar en la plantilla de llamada y función.

conversión const: puede pasar una referencia a un objeto no constante a un parámetro de referencia constante.

Conversión de puntero de matriz o función: si el parámetro de función no es un tipo de referencia, la conversión de puntero normal se puede aplicar al parámetro real de la matriz o tipo de función. Un argumento de matriz se puede convertir en un puntero a su primer elemento. parecido. Un argumento de función se puede convertir en un puntero del tipo de función.

#include <cstring>
#include <iostream>
#include <vector>
#include <grp.h>
#include <unistd.h>

using namespace std;

template <typename T> T fobj(T data1,T data2)
{
    return data2;
}
template <typename T> T fref(const T& data1,const T& data2)
{
    return data2;
}


int main()
{
    string s1 = "value a";
    string s2 = "value b";
    fobj(s1,s2);
    fref(s1,s2);
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_32783703/article/details/105042933
Recomendado
Clasificación