gpt4 book ai didi

c++ - 为什么有时在类内部定义 C++ 方法?

转载 作者:可可西里 更新时间:2023-11-01 15:38:49 26 4
gpt4 key购买 nike

我经常在 C++ 中遇到大型非模板类,其中简单的方法直接在头文件的类主体中定义,而不是单独在实现文件中定义。例如:

class Foo {
int getBar() const { return bar; }
...
};

为什么要这样做?好像也有缺点。实现没有达到应有的隐藏程度,代码可读性较差,如果类的头文件包含在许多不同的地方,也会增加编译器的负担。

我的猜测是人们打算将这些函数内联到其他模块中,这可以显着提高性能。但是,我听说较新的编译器可以在跨模块的链接时进行内联(和其他过程间优化)。对这种链接时优化的支持有多广泛,它是否真的使这些定义变得不必要了?这些定义还有其他充分的理由吗?

最佳答案

C++ 标准规定在类定义中定义的方法默认是 inline。这会导致简单函数(如 getter 和 setter)的性能明显提高。链接时跨模块优化更难,尽管有些编译器可以做到。

关于c++ - 为什么有时在类内部定义 C++ 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/266854/

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