【发布时间】:2013-06-28 15:46:22
【问题描述】:
智能指针通常很小,所以按值传递不是问题,但是传递对它们的引用有什么问题吗?或者更确切地说,是否存在不能这样做的特定情况?
我正在编写一个包装库,我的几个类在底层库中包装了智能指针对象...我的类不是智能指针,但 API 当前按值传递智能指针对象。
例如当前代码:
void class::method(const AnimalPtr pAnimal) { ... }
变成
void class::method(const MyAnimal &animal){...}
MyAnimal 是我封装AnimalPtr 的新包装类。
无法保证 Wrapper 类有一天不会超出包装智能指针的范围,因此按值传递让我感到紧张。
【问题讨论】:
-
一般来说,存储对智能指针的引用并不是一个好主意,但是当你知道它不会被存储时传递对它的引用通常是可以的,例如这个问题:stackoverflow.com/questions/179105/…跨度>