gpt4 book ai didi

c++ - 在类的定义中定义成员函数

转载 作者:太空狗 更新时间:2023-10-29 19:46:10 24 4
gpt4 key购买 nike

我一直想知道为什么我读过的大多数代码和教程总是在类内部声明成员函数,然后像这样在外部定义它。

       class A{

A doSomething();

};

A A::doSomething(){

//doing something

}

而不是这样做

       class A{

A doSomething(){

//doing something

}

};

无论如何,我在修改教授的类(class)时发现了这个:

Toute function membre définie dans sa classe (dans la declaration de la classe) est considerée par le compilateur comme une fonction inline。Le mot clé inline n'est plus utilisé。

转化为;

在其类中(在类声明中)定义的所有成员函数都被编译器视为内联函数。不再使用关键字‘inline’

我的理解是内联函数是像宏一样工作。编译器将整个代码块复制到调用该函数的每个实例中。

我的问题是;我教授类(class)中的陈述是否正确?如果正确,背后的原因是什么?

最佳答案

您教授的说法是正确的,您对 inline 含义的理解是错误的。 inline 函数允许跨翻译单元进行多个定义,并不一定意味着调用实际上是内联的(即像宏一样扩展)。

如果您在没有inlinestatic 的 header 中定义一个自由函数,并将该 header 包含在多个翻译单元中,您将打破单一定义规则。

成员函数类似,除非标记为内联(它们隐含在类定义中)。

关于c++ - 在类的定义中定义成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679709/

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