有人可以告诉我为什么会有随机结果?
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)是什么意思?非常感谢你!
答案 0 :(得分:4)
实例化的模板将是
int* f(int* x, int y)
{
return x + y;
}
因此,你将进行指针运算,然后取消引用你没有分配的指针,这恰好会增加23个地址超过a
。
基本上就像你打电话一样
*(new int(23) + 23);