gpt4 book ai didi

c++ - 类的内联成员是如何编译的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:15:19 25 4
gpt4 key购买 nike

我是 c++(以及编程本身)的新手,这是我听到的:

如果我们编译一个普通函数,编译器会创建一个指向该函数的指针,并将构成函数体的指令放在别处。这就是普通函数的编译方式。但是对于内联函数,编译器会在编译期间生成代码并将其替换为内联函数调用。

我的问题是,当(C++ 类的)成员函数被编译时,它们是被视为内联函数还是被视为普通函数?

最佳答案

它们就像普通函数一样,有一个异常(exception):如果您在类定义中编写函数定义(下面的示例),那么该函数会自动获得 inline 关键字:

[C++11: 9.3/2]: A member function may be defined (8.4) in its class definition, in which case it is an inline member function (7.1.2), or it may be defined outside of its class definition if it has already been declared but not defined in its class definition.

struct T
{
void foo() // the same as `inline void foo()`
{
// ...
}
};

不过,这并不意味着该类将被内联; inline 关键字只是一个提示,现在在决定是否实际内联一个函数时基本上被忽略了,尽管它确实会影响链接。

关于c++ - 类的内联成员是如何编译的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27608905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com