当使用' new'时,通过引用或指针本身返回指针之间的区别是什么?

时间:2015-03-27 08:32:57

标签: c++ reference return

在c ++中,当我在函数中使用" new"时,将创建一个指针。 那么,当我考虑返回函数的结果时,引用和指针之间的区别是什么?

像:

BY参考

Sample& (int & x, int & y){
    Sample * temp = new Sample(x,y);
    return *temp;
}

BY指针本身

Sample* (int & x, int & y){
    Sample * temp = new Sample(x,y);
    return temp;
}

使用“&new”时,似乎会导致内存泄漏。不正确,在上述情况下会发生内存泄漏吗?或者,重用这些退货材料将来会有一些风险吗?

1 个答案:

答案 0 :(得分:4)

如果返回引用,则向调用者暗示他们不需要delete返回的对象,从而导致内存泄漏。如果他们只看你的API而不是功能实现,那么这个含义就更强了。

建议使用智能指针让调用者知道对象是动态分配的,并且他们应该在其生命周期管理中合作。如果没有令人信服的理由,那么以值返回会更好。