我一直想知道为什么我读过的大多数代码和教程总是在类中声明成员函数,然后像这样定义它.
class A{
A doSomething();
};
A A::doSomething(){
//doing something
}
Run Code Online (Sandbox Code Playgroud)
而不是这样做
class A{
A doSomething(){
//doing something
}
};
Run Code Online (Sandbox Code Playgroud)
无论如何,我正在修改我的教授的课程,我发现了这个:
" Toute fonctionmembredéfiniedanssa classe(danslaséclarationdela classe)estconsiéréeparle compilateur comme une fonction inline.Lemotcléinlinen'estplusutilisé. "
转化为;
" 在其类中定义的所有成员函数(在类'声明中)被编译器视为内联函数.不再使用关键字'inline' "
我理解的是,邻接内联函数就像宏一样工作.编译器将整个代码块复制到调用该函数的每个实例中.
我的问题是; 我教授的课程中的陈述是否正确,如果是,那背后的原因是什么?
你教授的陈述是正确的,你对什么inline方法的理解不是.一个inline功能可以让用户跨翻译单元多重定义,并不一定意味着通话实际上是内联(即扩大像宏).
如果您在标题中定义了一个自由函数而没有inline或static在多个翻译单元中包含该标题,那么您将打破一个定义规则.
成员函数是相似的,除非标记为内联(它们隐含在类定义中).