声明对指针的指向者值的引用的开销
Overhead of declaring a reference to the pointed-by value of a pointer
>假设我有一个函数,它接受指向参数的指针。
void foo(Info* bar) {
}
如果我在需要它的值时没有取消引用 bar,而是在函数代码的开头执行此操作:
Info& i_val = *Info;
我这样做是否引入了任何特定类型的(明显的)开销?或者它会和我刚刚取消引用指针一样?
请注意,我不会接受任何问题告诉我这是一个坏主意(没有适当的理由),抱怨在C++代码库中使用原始指针。
另请注意,我无法更改函数的签名。
我这样做是否引入了任何特定类型的(明显的)开销?
不。引用处理非常有效,因此除了在自动区域中存储引用本身之外,您没有使用任何其他资源。
或者它会和我刚刚取消引用指针一样?
创建引用和取消引用原始指针之间的最大区别在于重新分配指针时会发生什么情况。引用将继续引用创建i_val
时bar
指向的对象,而取消引用bar
将直接提供其当前位置。
相关文章:
- 将对象数组的引用传递给函数
- 什么时候在C++中返回常量引用是个好主意
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 何时在引用或唯一指针上使用移动语义
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 编译C++时未定义的引用
- Ctypes wstring通过引用传递
- C++ 特征库:引用的性能开销<>
- 右值引用是否具有与右值引用相同的开销?
- 此操作在C++中通过引用进行修改的开销是多少
- 返回对成员变量数据的引用的开销
- 声明对指针的指向者值的引用的开销
- 如何在容器中使用引用来避免指针的取消引用开销
- 声明引用的C++开销
- C++智能指针取消引用 - 检查它是否已初始化的开销是多少?
- 引用静态函数作为类定义的一部分是否有任何开销?
- 传递引用的开销是什么?
- 引用std::basic_string特化string与自定义分配器作为std::string的常量对象,没有开销
- 指针解引用开销vs分支/条件语句