c++ - 静态意味着内联或反之亦然或两者兼而有之?

标签 c++ c++11 c++17

对于免费(不在类内)函数:

  • static 意味着 inline?
  • inline 意味着 static?

还是两者兼而有之?

考虑例子:

static void foo1() {  ... };

static inline void foo2 { ... };

inline void foo3() { ... };

有什么区别?

最佳答案

有差异,考虑(在header中):

static int foo1() { static int i = 0; return ++i; }
static inline int foo2() { static int i = 0; return ++i; }
inline int foo3() { static int i = 0; return ++i; }

并在 2 cpp 中“void caller[1-2]_foo[1-3]() { std::cout << foo[1-3]() << std::endl; }”。

所以

int main()
{
    caller1_foo1(); // 1
    caller2_foo1(); // 1

    caller1_foo2(); // 1
    caller2_foo2(); // 1

    caller1_foo3(); // 1
    caller2_foo3(); // 2
}

Demo

我找不到 static 之间的差异和 static inline虽然。

关于c++ - 静态意味着内联或反之亦然或两者兼而有之?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203341/

相关文章:

c++ - 对 CoInitialize@4 和 CoUninitialize@0 的 undefined reference

c++ - 当我编译 webrtc 服务器时,Windows 上仅支持 clang-cl

C++ 从 std::vector<std::function<...>> 中删除 std::function

c++ - 调用C标准库函数的标准C++方式

c++ - 被调用方返回对象的范围 w.r.t.调用者局部变量?

c++ - 概念可以替换模板关键字的所有其他实例吗?

c++ - 错误 : unqualified ID

c++ - 链接方法和临时变量,请说明

c++ - 如何在程序启动时启动 C++ 线程?

具有虚函数的 C++ 多级继承