C 中的内联成员函数:深入探究
内联成员函数在类定义中声明,但在类主体之外实现。虽然它们通常驻留在头文件中,但在某些情况下,将实现放在头文件中是不可行的。
考虑这样的场景:类 A 包含类 B 的实例,并且类 B 声明内联成员函数 getA() 返回 A 的实例。由于循环包含,我们被迫将 getA() 的实现移至 B.cpp 文件。
问题出现了:编译器会内联吗获取A()?根据 C FAQ,内联函数的定义必须位于头文件中,除非它专门在单个 .cpp 文件中使用。在我们的例子中,定义在 B.cpp 中,这意味着 getA() 不会被内联,除非它在 B.cpp 本身中使用。
关于内联关键字的意义,建议只使用类体之外的函数定义中的最佳实践。
至于寻找在 .cpp 文件中定义内联成员函数的替代方法,不幸的是,据我们所知,还没有一种方法。该定义必须驻留在头文件中,以便编译器执行内联。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3