绕过指针或物体?

时间:2014-01-24 21:50:22

标签: c++ pointers reference

将指针传递给对象或实际对象是否是更好的设计实践?

每种优势的缺点是什么?

我看了this link并知道:

指针可以接收NULL参数,参数参数不能。如果您有可能想要传递“无对象”,则使用指针而不是引用。

此外,通过指针传递允许您在调用站点显式地查看对象是通过值还是通过引用传递:

// Is mySprite passed by value or by reference?  You can't tell 
// without looking at the definition of func()
func(mySprite);

// func2 passes "by pointer" - no need to look up function definition
func2(&mySprite);

2 个答案:

答案 0 :(得分:1)

根据您对所有权的严格程度,在大多数情况下,原始指针是垃圾的最差选择。通常,如果您计划使用原始指针,您应该多考虑一下,因为智能指针将解决原始指针带来的许多问题。

通过引用调用通常是C ++避免复制内容的方法,而不必在操作参数时使用指针语法。

还有可能设计optional类型,你可以做两件事:决定什么时候应该返回一个空的可选对象,并在返回的值上应用操作符来优雅地处理一个空的可选项。这是搜索,过滤和列表处理的好方法。

但是,你的问题缺乏必要的背景,实际上可以帮助你选择一个好的设计。

答案 1 :(得分:0)

传递指针或引用(不是按值的对象)。正如您已经指出的那样,如果您需要表示可能没有对象这一事实,请使用指针,因为它们可以具有NULL值,而引用不能为NULL。