为什么我在此模板上有随机结果?

时间:2017-08-28 17:17:04

标签: c++ templates pointers

有人可以告诉我为什么会有随机结果?

template<class T, class U>
T f(T x, U y)
{ 
    return x+y;
}
int f(int x, int y)
{ 
    return x-y;
}
int main()
{ 
    int *a=new int(3), b(23);
    cout<<*f(a,b);
    return 0;
}

b(23)是什么意思?非常感谢你!

1 个答案:

答案 0 :(得分:4)

实例化的模板将是

int* f(int* x, int y)
{
    return x + y;
}

因此,你将进行指针运算,然后取消引用你没有分配的指针,这恰好会增加23个地址超过a

基本上就像你打电话一样

*(new int(23) + 23);