繁体   English   中英

在C ++中交换void *指针

[英]Swapping void* pointers in C++

我想问一下这种交换实现是否有效:

 void swap (void* &a, void* &b ) 
 {    
     void * tmp = a;
     a=b;
     b=tmp;
 }

int main() 
{
   void * a;
   void * b;   
   swap (a,b);
   return 0;
}

我是否需要以某种方式将对象的大小发送到交换方法并使用它? 如果是这样,那么这个函数的优秀实现是什么?

看起来很好(指针只是一个指针,所以它指向的东西的大小无关紧要),但为什么不使用std :: swap

在这个例子中,你正在搞乱未初始化的变量,这很糟糕,但这似乎不是你问题的主要观点。

有用。 我不确定它是否符合你的想法:指针值被交换,而不是它们指向的任何东西。

这个函数适用于交换void指针; 编译器知道它们的大小。 如果你想交换void指针以外的东西,你需要一个不同的功能。

编辑:但这是交换模板功能的一般模式:

template <class Ty>
void swap(Ty& lhs, Ty& rhs) {
    Ty tmp = lhs;
    lhs = rhs;
    rhs = tmp;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM