外部与内部联系和绩效

Ida*_*dan 0 c++

假设我在一个类中有3个函数:

class Foo {
    inline void FooInline() { /* bla bla */ }
    static void fooStatic();
    void foo();
};
Run Code Online (Sandbox Code Playgroud)

据我所知,最后两个有外部联系,而第一个有内部.

我想知道哪个函数最快可以调用,以及什么是权衡.

谢谢

AnT*_*AnT 5

不,这三者都有外部联系.非本地类的成员函数在C++中始终具有外部链接.而且,inline即使它是非成员函数,对连接也没有影响.

联动对效率没有影响.内联可能有,但它取决于太多的变量.

  • @Tomas - C++标准专门说"内联关键字对函数的链接没有影响" (3认同)
  • @BostonLogan:MSDN所说的完全是胡说八道.在C++语言中,`inline`对链接没有影响.如果MS编译器与MSDN一致,则它是MS编译器中的一个严重错误.最重要的是,请注意在OP中我们讨论的是成员函数,而MSDN则专门讨论非成员函数. (3认同)
  • 通常,视觉工作室并不是标准合规的闪亮灯塔.希望他们能用C++ 0x兑换自己. (2认同)
  • @Tomas:绝对不是真的.C++中的`inline`对函数的链接没有影响.它肯定不会"使功能静止".你从哪里得到那些奇怪的信息? (2认同)
  • 我刚刚使用MSVC++ 2005进行了几项测试,它似乎正确地处理了内联函数.即行为与*external*link一致.显然,它纯粹是一个MSDN的问题:MSDN所说的是全BS或已经过时. (2认同)