C++中的内联函数定义
inline function definition in C++?
这是一道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
关键字无关。
相关文章:
- 不同翻译单元中不可重载的非内联函数定义
- Visual Studio中的函数声明和函数定义问题
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 具有enable_if外部类原型的模板类构造函数定义
- 类的前向声明之后的类成员函数定义,在类声明之前
- 为函数定义符号不明确的指针参数
- C++模板专用化 - 无法匹配函数定义
- 错误:在第 6 行'{'标记之前,此处不允许使用函数定义
- 找不到 #define 的函数定义
- 根据类型特征更改函数定义?
- 将抽象基类中的所有纯虚函数定义为 varaidaic 模板
- 命名空间更改函数定义
- "Type&"与C++函数定义中的"Type*"
- C++:为什么允许在另一个函数中声明函数,而不允许在函数定义中声明?
- 如何从 C++ 中的现有模板函数定义新函数
- 私有在函数定义/实现的返回值范围内是什么意思 (c++)?
- 越界成员函数定义是否需要一个完全限定的类名,直到全局范围
- 为什么c++允许成员函数定义中实例的私有成员访问
- Qt基类函数定义
- C++函数定义中参数列表后面额外一对括号的含义