相关疑难解决方法(0)

通过引用传递时取消引用指针

当通过引用函数传递时取消引用指针会发生什么?

这是一个简单的例子

int& returnSame( int &example ) { return example; }

int main()
{
  int inum = 3;
  int *pinum = & inum;

  std::cout << "inum: " <<  returnSame(*pinum) << std::endl;

  return 0;          

}
Run Code Online (Sandbox Code Playgroud)

是否有临时对象产生?

c++ pointers reference

41
推荐指数
2
解决办法
2万
查看次数

C++函数参数:使用引用还是指针(然后取消引用)?

我得到了一些代码,其中一些参数是指针,然后指针被解引用以提供值.我担心指针取消引用会花费周期,但在查看之前的StackOverflow文章之后:取消引用指针有多贵?,也许没关系.

这里有些例子:


bool MyFunc1(int * val1, int * val2)
{
    *val1 = 5;
    *val2 = 10;
    return true;
}

bool MyFunc2(int &val1, int &val2)
{
    val1 = 5;
    val2 = 10;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢传递参考作为一种风格问题,但是一个版本(在处理周期方面)比另一个版本更好吗?

c++ performance pointers

17
推荐指数
5
解决办法
6849
查看次数

将指针转换为参考,成本高昂?

可能重复:
在C++中取消引用指针有多贵?

如果我有一个指向对象的指针,那么Object *ptr;我想把它传递给void foo(Object& obj)我理解我需要编写的形式的方法:

foo(*ptr);
Run Code Online (Sandbox Code Playgroud)

但为什么要解除引用ptr?通过它不是没有意义foo(ptr);吗?我担心*ptr可能会制作原始对象的副本,或者至少不仅仅是传递到foo地址来使用.

任何人都可以为我清除这个吗?是否传递*ptr了一个潜在的瓶颈,因为代码期望这个代码表现得像函数一样快void foo(Object *obj);并且通过调用foo(ptr)

c++ c++11

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×3

pointers ×2

c++11 ×1

performance ×1

reference ×1