下面的两个复制功能有什么区别?我似乎看不出它们之间有什么区别。特别是 void*& 与 void*。
那么T*&和T*有什么区别呢?我什么时候会使用其中一个?另外,如果我让他们接受 const 参数,会发生什么?会有什么不同?
#include <iostream>
void Copy(void* Source, void* Destination, int Size)
{
//memcpy(Destination, Source, Size);
char* S = static_cast<char*>(Source);
char* D = static_cast<char*>(Destination);
*D = *S;
}
void Copy2(void* &Source, void* &Destination, int Size)
{
char* S = static_cast<char*>(Source);
char* D = static_cast<char*>(Destination);
*D = *S;
}
int main()
{
int A = 2;
int B = 5;
int C = 7;
void* pA = &A;
void* pB = &B;
void* pC = &C;
Copy(pA, pB, 1);
Copy2(pA, pC, 1);
std::cout<< B <<std::endl;
std::cout<< C <<std::endl;
}
以上都打印“2”。两者都一样不是吗?