通常认为将参数作为指针而不是作为值传递时更好吗?显然它在很大程度上取决于情况,但是当有选择时,使用指针会更好吗?
这仅仅是出于记忆的原因吗?
如果它是真的,指针或引用,最好通过什么?
答案 0 :(得分:6)
一些一般的经验法则:
如果需要修改它,请传递指针或引用。如果值可能为null,则传递指针,否则传递引用。
如果它很大,则传递一个const指针或const引用,具体取决于null是否为合法值。
如果使用指针,则更喜欢指向裸指针的智能指针。
否则,按值传递。
答案 1 :(得分:1)
在C ++中,当您通过值传递时,它会调用自定义类的复制构造函数。如果您传递矢量或大型数据结构,这可能非常昂贵。
您应该使用const和reference来不复制它并仍然保护该值。否则,对像int这样的小东西使用值通常是合理的。
答案 2 :(得分:0)
最好永远传递指针。
通过const引用以避免复制费用。
如果您希望该功能修改原件,请按引用传递。
否则按值传递。
指针永远不应该在RAW中传递(没有所有权语义)
指针永远不应放在智能指针或容器类之外。
只有当对象可能为NULL并且显式未传递所有权时(通过大量文档),如果您传递了指针,那么这只是。
我期望看到指针的唯一一次是当我无法使用引用时(即它可能为NULL)并且实际上从不(或在容器方法内部深处)。
答案 3 :(得分:0)
这取决于您传递的参数类型。如果参数大小合理地(再次由你决定)为低,那么你可能想要传递值。
对于大尺寸结构/数组,通过pointer or reference总是一个好习惯。除此之外,如果参数不应该是可修改的,那么您也可以添加const
。
答案 4 :(得分:0)
我通常通过引用(可能是const 1)传递输入参数,并通过输出参数的指针传递。
这样可以立即看到哪些参数是输入参数,哪些参数是输出参数(被调用者修改其内容)。
当然,形成像int,long等小类型我不打扰引用。