C++中的内联函数定义

inline function definition in C++?

本文关键字:函数 定义 C++      更新时间:2023-10-16

这是一道C++在线测试题。测试已经完成。

class Person
{
    std::string name;
    public:
          std::string const &getname(void) const ;      
} ;
inline std::string const &Person::getname() const
{
        return name; 
}

A: 计算机插入函数getname()的代码

B: 计算机生成对函数getname()的调用

C: 调用函数的默认参数值返回

D: 函数的所有参数都放置在内存堆栈上

我选A。对吗?

谢谢。

编译器可以内联函数。

当函数体位于多个编译单元中时,只要函数体相同,编译器/链接器就不会抱怨

来自C++11草案

§7.1.2\2

带有内联说明符的函数声明(8.3.5、9.3、11.3)声明了一个内联函数。内联说明符指示在调用点要优于通常的函数调用机制。执行此内联替换不需要实现在呼叫点;但是,即使此内联替换省略,7.1.2定义的内联函数的其他规则应仍然受到尊重。

因此,对于需求,它基本上只是一个普通函数,因此选项B。它可能会也可能不会将其代码插入到调用函数中,但这也适用于而不是标记为内联的函数,因此与inline关键字无关。