首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递引用的指针/传递引用的引用

传递引用的指针/传递引用的引用
EN

Stack Overflow用户
提问于 2011-10-02 07:21:28
回答 1查看 281关注 0票数 2

当我传递一个指向变量引用的指针时,我会得到一个普通的指针,还是会得到一个指向引用的指针?当我将一个引用传递给一个引用时,我会得到什么?我在一个类中使用standard library的堆栈实现,我希望有一些包装器方法来防止对堆栈的非法访问,但我得到了奇怪的段错误,考虑到堆栈,我将其缩小到我的getter方法。

这些方法是否应该返回到堆栈中存储的原始变量的干净引用/指针?

代码语言:javascript
复制
int& zwei() { return stack.top() };

代码语言:javascript
复制
int* eins() { return &stack.top() };
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-02 07:28:50

没有“指向引用的指针”这样的东西。引用是别名,所以取其中任何一个的地址都会给出一个指向同一个对象的指针:

代码语言:javascript
复制
int a;
int & b = a;

assert(&a == &b);

如果stack对象在函数返回的作用域中仍然是活动的,则两个函数都返回一个有效的结果。

代码语言:javascript
复制
std::stack<int> s;

int & foo() { return s.top(); }  // OK, maybe
int * goo() { return &s.top(); } // ditto

int & boo() { std::stack<int> b; return b.top(); } // No! Dangling reference!

还应该检查堆栈是否为空,在这种情况下,top()是无效的。

(我也应该反对使用与类型相同的名称调用变量,即使类型的名称是std::stack。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7623585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档