代码之家  ›  专栏  ›  技术社区  ›  Alan

为什么boost::shared ptr->操作符没有内联声明?

  •  2
  • Alan  · 技术社区  · 15 年前

    因为 boost::shared_ptr 可以非常频繁地调用并简单地返回一个指针,不是吗 -> 接线员是 inlined ?

    T * operator-> () const // never throws
    {
        BOOST_ASSERT(px != 0);
        return px;
    }
    

    一个好的编译器会自动吗 inline

    我应该为此失眠吗?:-)

    3 回复  |  直到 11 年前
        1
  •  18
  •   anon anon    15 年前

    内联函数是在类内隐式定义的。没有必要使用 inline 关键字在这些情况下,这样做是不寻常的。

        2
  •  4
  •   jpalecek    15 年前

    一个好的编译器会自动内联它吗?

    是的,很有可能。

    最好不要。如果您想确定(或者您非常好奇),请检查编译器中输出的程序集。

        3
  •  1
  •   curiousguy    13 年前

    请注意 shared_ptr 是一个班 模板 ,所以它的成员函数实际上是 .

    因为他们不是 export 埃德,他们不应该 ,但也 定义 在所有使用它们的翻译单元中,就像用 inline

    在某种程度上, template 也意味着