Mix*_*ira 3 c++ shared-ptr return-value-optimization
我试图了解 RVOshared_ptr在这种特殊情况下如何结合使用。
假设我有这个示例代码:
\nclass A {\npublic:\n void action() {}\n};\n\nclass Container {\npublic:\n shared_ptr<A> getA() { return m_a; }\n\nprivate:\n shared_ptr<A> m_a;\n};\n\nContainer cont{};\ncont.getA()->action();\nRun Code Online (Sandbox Code Playgroud)\n如果我没记错的话,在这种情况下,不应复制/复制构造shared_ptr返回的getA()xe2\x80\x99,因为它是由编译器优化的。\n因此,在最后一行中,我shared_ptr调用action()的函数应该是直接包含在对象m_a内部的那个Container?
这样的话,如果指针没有被复制,那么内部引用计数是不是不会递增/递减呢?
\n因为我将它用作右值,所以它经过了优化,我可以直接使用它来访问指向的对象,而不需要任何成本,就像原始指针一样?
\n如果不是这样,有没有办法避免增加/减少的成本?我实际上并没有保留shared_ptr,但我仅将它用于对所包含的对象进行操作。
或者,所包含对象的生命周期可能存在任何问题?
\n| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |