我正在查看与我正在进行的宠物项目相关的一些C ++源代码from a library,并遇到了一些我不理解的事情。在我期望指针取消引用然后赋值的地方,库作者使用函数末尾附近的std::swap()
来写结果:
std::swap(*out, result);
我希望看到类似的东西:
*out = result;
请注意,result
是typedef
size_t
,out
是指向同一类型的指针。
对于"系统编程",我的背景是C和C#,但在C ++中并不多。这种类型的"赋值"?
是否有任何特殊原因答案 0 :(得分:10)
当值类型更有趣时,例如,std::vector<T>
,将std::swap()
临时构造的对象放到位而不是分配它可能更有意义:给定临时结果即将离开,避免任务,只是改变指针是有道理的。我认为没有任何理由可以使用std::size_t
之类的基本类型做类似的事情。