【发布时间】:2014-06-11 03:30:07
【问题描述】:
我想知道下面的代码是否正确 - 它在这种情况下有效,但可能只是因为它的简单性。是什么让我想知道:函数(f1)按值返回对象,但在调用它的函数(f2)中,我通过引用而不是按值获取该对象。这是一个问题吗?我想知道,因为它对我来说看起来有点奇怪,但它有效,我认为它应该有效。因为对象是在 f1 的堆栈上创建的,然后(按值)返回到堆栈 f2,然后在 f1 堆栈上创建的 f2 堆栈上获得对该对象的引用。您对此有何看法?
class A {
public:
A(){a=100; b=200;}
int a;
int b;
};
typedef boost::shared_ptr<A> AP;
AP get(){
AP a = AP(new A());
return a;
}
AP get2(){
AP const& a = get();
return a;
}
int main() {
AP const& a = get2();
std::cerr << a->a << std::endl;
return 0;
}
【问题讨论】:
标签: c++ function stack shared-ptr