这是一个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.这是正确的吗?
感谢。
答案 0 :(得分:2)
编译器可以内联函数。
只要主体是相同的,当在多个编译单元中找到函数体时,编译器/链接器将不会抱怨。
答案 1 :(得分:1)
§7.1.2\ 2
带有内联说明符的函数声明(8.3.5,9.3,11.3) 声明一个内联函数。内联说明符指示 实现内联函数体的替换 呼叫点优先于通常的函数调用机制。 执行此内联替换不需要实现 在通话点;然而,即使这种内联替换是 省略,7.1.2定义的内联函数的其他规则 仍然受到尊重。
因此,对于要求,它基本上只是一个普通函数,所以选项B.它可能会也可能不会将它的代码插入到调用函数中,但这也适用于函数不标记为内联,因此与inline
关键字无关。