【发布时间】:2017-05-02 23:54:36
【问题描述】:
我知道两种方法:
// Declared somewhere but not on stack
shared_ptr<X> xptr = make_shared<X>();
xptr = nullptr; //#1
xptr.reset(); //#2
至于我#1看起来更好,但从C++的角度来看更好
【问题讨论】:
标签: c++11 memory-management shared-ptr
我知道两种方法:
// Declared somewhere but not on stack
shared_ptr<X> xptr = make_shared<X>();
xptr = nullptr; //#1
xptr.reset(); //#2
至于我#1看起来更好,但从C++的角度来看更好
【问题讨论】:
标签: c++11 memory-management shared-ptr
客观上两者都不是更好。几乎在每一种情况下,差异都是纯粹的审美。
我能想到的唯一例外是编写一个通用函数模板,它可以同时使用智能指针和裸指针。只有ptr = nullptr 是裸指针的有效语法。
仅当指针不为空时,赋值和重置成员函数的行为不同。
【讨论】: