簡體   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