类中的函数(C++)

functions in a class(C++)

本文关键字:C++ 函数      更新时间:2023-10-16

我从一本书中了解到类中的函数必须是"内联的"但是,我不明白为什么...那本书还不够我的母语不是英语,所以我在Engilsh描述的网络中搜索很差我国的网站对像我这样的学生非常封闭所以请回答我

我认为如果一个函数(不是内联的)在一个类中,那么每当编译器引用该函数时,就会重复创建函数的堆栈帧(一些地址、参数等)所以这就是为什么类中的函数必须是内联的?对不起,我的英语不好

在C++的定义中,如果在class内部声明了一个成员函数,编译器将其理解为inline

请注意,inline(包括在 class 声明的函数的隐式函数)只是对编译器的提示,编译器可能实际上在其某些(或全部或全部或无)调用站点上内联该函数,也可能不内联。内联始终是编译器可以自由实现或不实现的优化,并且通常还支持其他优化。

顺便说一句,一些编译器可能会内联未标记为inline的函数,甚至可以通过所谓的链接时间优化(用于g++编译链接-flto -O2)跨编译单元完成。