在需要引用时传递指针

Mic*_*ael 1 c++ pointers reference

我有以下两个功能:

void B::set(A * ptr){
  this->a = ptr;
  this->info = get_some_info_from_a(*ptr);
}

T get_some_info_from_a(A& ref){
  return ref.info;
}
Run Code Online (Sandbox Code Playgroud)

如你所见,我将A*ptr作为set(...)中的指针,但我需要一个引用来调用get_some_info_from_a(...).所以我取消引用ptr并将其作为一个参数.

那是对的吗?是否有效,因为A有一些必须由复制/移动构造函数复制的资源?我问这个问题,因为这条线似乎真的引入了一些神秘的错误.

Jos*_*eld 6

这是正确和有效的.执行间接*ptr只是获取ptr指向的值,然后通过引用传递它get_some_info_from_a.永远不会复制该值.