代码之家  ›  专栏  ›  技术社区  ›  Aadil Hoda

如何理解函数声明中的内联、常量和引用?

  •  -1
  • Aadil Hoda  · 技术社区  · 3 年前

    我注意到在我的程序中有一个函数声明,其中包括 inline, const and reference(&) 在函数名之前。每一个关键词都很容易理解,但是当它们一起使用时,有人能解释一下它们的整体含义吗?

    inline const std::string& foo()
    {
    }
    

    我对CPP编程还不熟悉。啊,放这么多关键词对我来说没有意义。

    2 回复  |  直到 3 年前
        1
  •  1
  •   Some programmer dude    3 年前

    由于C++是一种自由形式的语言,在这里可以在操作符、关键字和符号之间添加任意数量的空白,所以我们可以这样编写函数(有用的注释):

    inline              // Hint for the compiler that it's allowed to inline the function
    const std::string&  // Function return type, a reference to a constant std::string
    foo                 // Function name
    ()                  // Function arguments, none
    {
        // Empty body, not correct since the function is supposed to return something
    }
    

    请注意 inline the inline keyword 对…有其他的影响 linkage .

        2
  •  2
  •   Aykhan Hagverdili    3 年前
    • const std::string&
      这是函数的返回类型,是对常量的引用 std::string .

    • inline
      这意味着可以多次定义此函数,但您必须确保这些定义是相同的,并且链接器可以保留其中一个定义并放弃其余的定义。通常在将函数定义放在头文件中时使用此选项,该头文件包含在多个cpp文件中,并且会失效 One Definition Rule 否则。