如何理解函数声明中的内联、常量和引用?
How to comprehend inline, const and reference in a function declaration?
我注意到我的程序中有一个函数声明,其中在函数名称前包含 inline, const and reference(&)
。单独跟随每个关键字很容易,但是谁能解释一下它们一起使用时的整体含义?
inline const std::string& foo()
{
}
我是 CPP 编程新手。啊,放那么多关键词对我来说没有意义。
const std::string&
这是函数的 return 类型,它是对常量 std::string
.
的引用
inline
这意味着该函数可能被定义多次,但您确信这些定义是相同的,并且链接器可能会保留其中一个定义并丢弃其余定义。您通常在将函数定义放在头文件中时使用它,该头文件包含在多个 cpp 文件中,否则会使 One Definition Rule 无效。
因为 C++ 是一种非常自由形式的语言,可以在运算符、关键字和符号之间添加任意数量的白色-space,所以我们可以这样编写函数(带有有用的注释):
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 have some other implications in regards to linkage.
我注意到我的程序中有一个函数声明,其中在函数名称前包含 inline, const and reference(&)
。单独跟随每个关键字很容易,但是谁能解释一下它们一起使用时的整体含义?
inline const std::string& foo()
{
}
我是 CPP 编程新手。啊,放那么多关键词对我来说没有意义。
的引用const std::string&
这是函数的 return 类型,它是对常量std::string
.inline
这意味着该函数可能被定义多次,但您确信这些定义是相同的,并且链接器可能会保留其中一个定义并丢弃其余定义。您通常在将函数定义放在头文件中时使用它,该头文件包含在多个 cpp 文件中,否则会使 One Definition Rule 无效。
因为 C++ 是一种非常自由形式的语言,可以在运算符、关键字和符号之间添加任意数量的白色-space,所以我们可以这样编写函数(带有有用的注释):
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 have some other implications in regards to linkage.