可能部分人对智能指针的用法和原理理解有问题。
对于 unique_ptr,原理上,整个结构就只有裸指针,赋值传参都是移动语义,指令就是复制一个整数,析构函数的调用是编译期确定的。这是典型的零开销抽象。用法上,unique_ptr 仅是负责析构的那个函数持有,其他函数借用都应用 get() 获取裸指针或者最好直接用 T& 而不是传递 unique_ptr。
shared_ptr 才是有少量开销的那个。问题是,如果觉得这个开销是多余的,那大概率应该用 unique_ptr。而且 shared_ptr 在生存期明晰时也是没必要传递的。
脱裤子放屁的 observer_ptr 没进标准,看来确实让人们迷惑了。
【 在 speedboy2998 的大作中提到: 】
: 直接传有助于编译器优化这是谣言还是定论?
: --
:
: ...................
--
修改:milksea FROM 114.249.235.*
FROM 114.254.3.*