C ++中的内联函数定义?

时间:2012-02-24 19:39:45

标签: c++ syntax inline

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

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

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

答:计算机插入函数getname()

的代码

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

的调用

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

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

我选择A.这是正确的吗?

感谢。

2 个答案:

答案 0 :(得分:2)

编译器可以内联函数。

只要主体是相同的,当在多个编译单元中找到函数体时,编译器/链接器将不会抱怨。

答案 1 :(得分:1)

来自C++11 draft

§7.1.2\ 2

  

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

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