C++ 什么是「&&引用;C++;模板?

C++ 什么是「&&引用;C++;模板?,c++,templates,C++,Templates,可能重复: 我遇到了以下代码: template <class T,class U> void inline TIntDataSwap2(U data,T i) { unsigned char*& data2=(unsigned char*&)data; data2[0]=(unsigned char)(((unsigned int)i>> 8)&0xff); data2[1]=(unsigned char)(((unsi

可能重复:

我遇到了以下代码:

template <class T,class U> void inline TIntDataSwap2(U data,T i)
{
    unsigned char*& data2=(unsigned char*&)data;
    data2[0]=(unsigned char)(((unsigned int)i>> 8)&0xff);
    data2[1]=(unsigned char)(((unsigned int)i>> 0)&0xff);
};
模板无效数据WAP2(U数据,TI)
{
无符号字符*&数据2=(无符号字符*&)数据;
数据2[0]=(无符号字符)((无符号整数)i>>8)和0xff);
数据2[1]=(无符号字符)((无符号整数)i>>0)和0xff);
};
“unsigned char*”后面的“&”是什么意思

这只能在模板中使用吗?我以前从未见过它,“&变量后面”很难用谷歌搜索,请帮助我…

参考运算符-。

&
不是“变量后面”,而是类型的一部分

<>你可能已经知道C++中引用的含义了。在本例中,
unsigned char*&
只是对
unsigned char
指针的引用


这完全独立于模板,可以在模板定义内部或外部使用,

无符号字符*&
是指向
无符号字符的指针的引用。始终从右向左读取指针/参考组合。这并不局限于在模板中使用


通常,当传递参数给函数时,它是通过C++传递的值(甚至是巨大的对象)。创建一个副本,这是传递给函数的内容。这既消耗了额外的内存,又防止函数修改传递给它的参数(因为它只获得一个副本)。使用引用时,我们不制作副本,因此内存效率更高。它还允许函数在需要时修改参数。如果您只希望获得性能增益,而不希望函数修改参数,则可以声明参数a

const
reference。

我不明白?我只知道变量前面的“&”来获取指向它的指针。什么是“类型后面的类型”@ USE535836,它是A,它是C++中的一个基本概念(维基百科文章会给你一些见解,虽然我建议你得到A)。好吧,我现在明白了…它是这样的:void MultiplyByFive(int&number){number*=5;}>>调用by MultiplyByFive(i)void MultiplyByFive(int*number){*number*=5;}>>调用by MultiplyByFive(&i)@user537836你得到了这个想法:)还需要注意的是,
number
在第二个版本中可以为空,但是来自第一个版本的引用不能为空(这样更安全)我喜欢“在变量后面”这句话:汉克斯,我以前从未使用过参考资料。我知道你是从右到左读的,因为如果你在它周围加上括号,它是这样的:((unsigned char*)&)