我不知道这个问题是否适合 SO,但我们开始了:
启用 shared_from_this 时,是否会为可执行文件增加太多大小?解决 shared_from_this() 调用是否也需要太多时间?
环顾文档, enable_shared_from_this 是一个只添加两个函数的助手,所以我认为它不应该占用太多额外的大小。
编辑这个问题的更合适的标题应该是,它增加了多少尺寸?而不是询问它是否增加了太多的尺寸。
启用 shared_from_this 时,是否会为可执行文件增加太多大小?
在运行时,它会将 a 的大小添加weak_ptr
到每个实例化对象中,在当前版本的 boost 中,它是2 个指针的大小。
至于可执行二进制文件本身,很难预测更改源代码将如何影响该文件的大小。
解决 shared_from_this() 调用是否也需要太多时间?
您应该预计shared_ptr
从 a构造 a 所需的时间weak_ptr
。
您可以查看 boost 源文件。它仅添加mutable weak_ptr<T> weak_this_;
到您的类中,该类本身仅包含指向实例的指针和指向 refcounter 的指针。