English 中文(简体)
C++ 提及共享的接收器或参考
原标题:C++ reference to a shared_ptr vs reference
  • 时间:2009-10-09 09:23:48
  •  标签:

所有人,

我最近刊登了question。 从这一点来看,将物体的提及变成一项功能,而该功能当时为该物体而设,似乎是C++的良好接口。 数据存取,例如

  bool DAL::loadCar(int id, Car& car) {} 

现在我很想知道,是否提到推动:共享——吸收会更好,例如。

  bool DAL::loadCar(int id, boost::shared_ptr<Car> &car)

任何想法? 是否有好处?

对这两条电话适用合理性会产生什么影响?

提前感谢。

最佳回答

sbi所述,“它取决于该职能是什么。 “......

然而,我认为,上述最重要的方面不是允许或不允许民族解放军,而是该功能是否为物体配备了点子供日后使用。 如果该职能只是在某些数据中填满,那么,出于以下原因,我将参考:

  • the function can still be used by clients who do not use shared_ptr, used for stack objects, etc.
  • using the function with shared_ptr is still trivial - shared_ptr has dereferencing operator that returns a reference
  • passing NULL is not possible
  • less typing
  • I don t like using "stuff" when I don t have to

如果该功能需要储存点以供日后使用,或者你预计该功能可能会改变,从而需要储存点子,然后使用共享的吸收器。

问题回答

它取决于该职能是什么。

一般来说,一个持点人的职能表明,即使打电话者没有异议,他们也可以称职——他们总是可以通过<条码>UNL。 如果符合职能,则使用一个(智能)点。 通过参考点数,而不是复制点,是优化(而不是过早的),因为这样可以避免不必要的增加和减少参考量,在MT环境中,参考值会受到明显的影响。

采用非最根本的字眼作为论点的职能,可望通过一个可能改变的有效物体。 要求人不能(法律上)要求行使这一职能,除非他们有有效的反对,否则他们不会叫它,除非他们愿意改变目标状态。 如果能更好地适应职能,则使用参考。

如果你们必须获得一个有效的物体(即,你不希望打电话的人通过NUL),那么,用一切手段,就不使用提升:共享——吸收器。 你的第二个例子提到“智能点”。 既然提到,共有的吸收物体不能是NUL....,但它的确意味着它可能没有民族解放军的价值(即“核”物体)。

我不确切地理解,为什么你会认为提及聪明才智者是“优”的,打电话者的职能是否已经使用智能点?

至于“const”的含义,你指的是什么东西。

bool DAL::loadCar(int id, const Car& car) {}

? If yes, it would be counter-productive, you communicate to the compiler the fact that "car" doesn t change (but presumably you want it to change!).

或者说,你指的是发挥“最根本”的作用,例如:

class DAL{
   bool loadCar(int id, Car& car) const;
}

?

在后一种情况下,您向汇编者/消费物价指数用户表示,“载体”方法没有修改DAL物体。 如果情况确实如此,这样做就是一个好的想法,不仅能够使一些汇编者优化,而且一般来说,在“合同”(功能签名)中明确规定,这一功能不对数字格式作出修改,特别是如果你在你的法典中作出这一默示假设(这样,你才能确保这种保留是真实的,而且今后没有人会改变“载量”功能,从而改变“DAL”物体)

在第一种情况下,你只是通过一辆汽车,用信息“填充”。 例如,你可以创建“违约”卡,然后填充。 我看到这方面的一个不便之处:在业务处工作后,没有哪一类是:一类是穷人、违约者、无用人、“冒犯”车,另一类是真正填满的。 对我来说,一辆汽车是一辆汽车,因此应该成为有效的汽车(例如,我可以从A号到B号地点开车;我可以加快、开张、开张、停机)。

我通常与传统观点者合作,而不是推动(没有问题,就这样),因此,我确实可以就后一种选择发表意见。





相关问题
热门标签