首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >c++:什么时候使用指针?

c++:什么时候使用指针?
EN

Stack Overflow用户
提问于 2009-03-18 12:49:06
回答 7查看 19.6K关注 0票数 16

在阅读了一些教程后,我得出结论,一个人应该总是使用对象的指针。但在阅读一些在堆栈上创建QPaint对象的QT教程(http://zetcode.com/gui/qt4/painting/)时,我也看到了一些例外。所以现在我很困惑。什么时候应该使用指针?

EN

回答 7

Stack Overflow用户

发布于 2009-03-18 13:54:57

首先,问题是错误的:困境不是在指针和堆栈之间,而是在堆和堆栈之间。您可以将对象放在堆栈上,并将指针传递给该对象。我假设你真正想问的是你是应该声明一个指向类的指针还是一个类的实例。

答案是,这取决于您想要对对象做什么。如果对象必须在控件离开函数后存在,则必须使用指针并在堆上创建对象。例如,当您的函数必须返回指向创建的对象的指针或将该对象添加到调用函数之前创建的列表时,您将执行此操作。

另一方面,如果对象是函数的局部对象,那么最好在堆栈上使用它。这使编译器能够在控件离开函数时调用析构函数。

票数 10
EN

Stack Overflow用户

发布于 2009-03-18 13:19:08

除了其他人提出的观点(特别是w.r.t.控制对象的生存期),如果你需要处理空对象,你应该使用指针,而不是引用。可以通过类型转换创建空引用,但这通常不是一个好主意。

票数 2
EN

Stack Overflow用户

发布于 2009-03-18 13:41:43

在这种情况下,我实际上使用指针:

代码语言:javascript
复制
class Foo
{
    Bar* bar;

    Foo(Bar& bar) : bar(&bar) { }

    Bar& Bar() const { return *bar; }
};

在此之前,我使用了从构造函数初始化的引用成员,但编译器在创建复制构造函数、赋值操作符和批处理时遇到了问题。

戴夫

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

https://stackoverflow.com/questions/658133

复制
相关文章

相似问题

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