- 主题:智能指针作为参数到底传引用还是直接传有定论没有?
?
当然是智能指针方便省事啊
【 在 finlab 的大作中提到: 】
: 嗯, 大项目关键项目需要。
:
: 我自己写的小程序,怎么方便省事怎么来。
: ...................
--
FROM 114.254.3.*
unique_ptr 传值是移动。借用应该穿 p.get() 裸指针。
【 在 Madlee 的大作中提到: 】
: unique_ptr传值就挂了吧?传进去owner就转移了,等函数退出的时候就析构了,调用者啥都没有了。
: --
: FROM 101.228.96.*
--
FROM 114.254.3.*
可能部分人对智能指针的用法和原理理解有问题。
对于 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.*
感觉带套不舒服
【 在 milksea 的大作中提到: 】
: ?
: 当然是智能指针方便省事啊
--
FROM 223.72.68.*
传值
大部分情况编译器会自己优化成move
没事别自己给自己加戏
【 在 speedboy2998 (极品飞车) 的大作中提到: 】
: 直接传有助于编译器优化这是谣言还是定论?
: --
:
:
--
FROM 223.160.129.*
uniq_ptr也是不是0开销的, 可以在ytube上搜
CppCon 2019: Chandler Carruth “There Are No Zero-cost Abstractions”
www dot youtube dot com/watch?v=rHIkrotSwcc&t=1063s
--
修改:eematlab FROM 101.87.219.*
FROM 101.87.219.*