传递智能指针作为引用参数:可以将智能指针作为引用参数传递给函数,这样可以避免不必要地拷贝智能指针对象。例如: void func(std::shared_ptr<int>& ptr) { // do something with ptr } 复制代码 返回智能指针对象:函数可以返回智能指针对象,从而避免了在函数外部手动管理内存的工作。例如: std::shared_ptr<int>...
可以通过智能指针的get()方法获取原始指针,或者通过解引用操作符(星号)获取对象的引用。例如:
WeakPtr<>实际上不是智能指针。它的表现像指针类型,但是并不能用来自动释放对象,通常用作追踪其它地方拥有的对象是否依然存活,当追踪对象释放时,WeakPtr<>会自动的置为null。(但是依然需要在解引用前判断是否为null,因为解引用null WeakPtr<>等于于解引用null,而不是no-op。)WeakPtr<>与C++11的std::weak_ptr<...
有个例外,在lambda表达式中,若将智能指针放在STL容器里作为参数传递,这里为了编译通过,必须使用const std::unique_ptr<T> &。 我想使用STL容器用来持有指针对象。此时可以用智能指针吗? 可以。在C++11里,你可以将智能指针放入STL容器内。而且,不要再使用ScopedVector<T>了,使用...