首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么要在C++中通过引用传递指针?

为什么要在C++中通过引用传递指针?
EN

Stack Overflow用户
提问于 2012-04-20 12:12:21
回答 3查看 112.1K关注 0票数 113

在什么情况下,您希望在c++中使用这种性质的代码?

代码语言:javascript
复制
void foo(type *&in) {...}

void fii() {
  type *choochoo;
  ...
  foo(choochoo);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-20 12:14:42

如果需要修改指针而不是指针所指向的对象,您可能希望通过引用传递指针。

这类似于为什么使用双指针;使用对指针的引用比使用指针稍微安全一些。

票数 166
EN

Stack Overflow用户

发布于 2013-11-25 17:51:08

50%的C++程序员喜欢在删除后将指针设置为null:

代码语言:javascript
复制
template<typename T>    
void moronic_delete(T*& p)
{
    delete p;
    p = nullptr;
}

如果没有引用,您将只更改指针的本地副本,而不会影响调用方。

票数 69
EN

Stack Overflow用户

发布于 2012-04-21 16:18:09

我不得不使用这样的代码来提供函数,为传入的指针分配内存并返回它的大小,因为我的公司使用STL将“对象”传递给我

代码语言:javascript
复制
 int iSizeOfArray(int* &piArray) {
    piArray = new int[iNumberOfElements];
    ...
    return iNumberOfElements;
 }

这不是很好,但指针必须通过引用传递(或使用双指针)。否则,如果通过值传递指针,则会将内存分配给该指针的本地副本,这会导致内存泄漏。

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

https://stackoverflow.com/questions/10240161

复制
相关文章

相似问题

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