声明对指针的指向者值的引用的开销

Overhead of declaring a reference to the pointed-by value of a pointer

本文关键字:引用 开销 指针 声明      更新时间:2023-10-16

>假设我有一个函数,它接受指向参数的指针。

void foo(Info* bar) {
}

如果我在需要它的值时没有取消引用 bar,而是在函数代码的开头执行此操作:

Info& i_val = *Info;

我这样做是否引入了任何特定类型的(明显的)开销?或者它会和我刚刚取消引用指针一样?

请注意,我不会接受任何问题告诉我这是一个坏主意(没有适当的理由),抱怨在C++代码库中使用原始指针。

另请注意,我无法更改函数的签名。

我这样做是否引入了任何特定类型的(明显的)开销?

不。引用处理非常有效,因此除了在自动区域中存储引用本身之外,您没有使用任何其他资源。

或者它会和我刚刚取消引用指针一样?

创建引用和取消引用原始指针之间的最大区别在于重新分配指针时会发生什么情况。引用将继续引用创建i_valbar指向的对象,而取消引用bar将直接提供其当前位置。