假设我有一个函数,它接受一个指向参数的指针。
void foo(Info* bar) {
}如果I,而不是在任何需要它的值的时候取消对bar的引用,请在函数代码的开头执行此操作:
Info& i_val = *Info;我这样做是不是引入了什么特别的(明显的)开销?或者,这就像我只是取消引用指针一样?
请注意,我不会接受任何告诉我这是一个坏主意的问题(没有适当的理由),抱怨在C++代码库中使用原始指针。
另外请注意,我不能更改函数的签名。
发布于 2016-06-05 18:11:53
我这样做是不是引入了什么特别的(明显的)开销?
不是的。引用处理非常高效,因此除了引用本身的自动区域中的存储外,您不会使用任何额外的资源。
还是一样,就好像我只是在周围取消引用指针?
创建引用和取消引用原始指针之间的最大区别在于重新分配指针时会发生什么。引用将继续引用创建i_val时bar所指向的对象,而直接取消引用bar将提供其当前位置。
https://stackoverflow.com/questions/37640672
复制相似问题