在c+;中声明类外函数的好处是什么+;? 我对C++比较陌生。在C++中,我遇到了两种声明成员函数的方法,即类内和类外。我搜索了这些差异,发现类中定义的函数被视为内联函数

在c+;中声明类外函数的好处是什么+;? 我对C++比较陌生。在C++中,我遇到了两种声明成员函数的方法,即类内和类外。我搜索了这些差异,发现类中定义的函数被视为内联函数,c++,function,class,inline,declaration,C++,Function,Class,Inline,Declaration,当我之前阅读内联函数时,它指出内联只是对编译器的一个请求,以替换函数体,而不是调用函数。但是如果函数很复杂(比如递归函数、包含静态变量、开关等),那么编译器将忽略该请求。 因此,即使我们在类内声明函数(如果它是复杂的),编译器也会忽略该请求。那么,如果我们可以让编译器自己的决定自动为我们定义函数,那么在类之外定义函数有什么意义呢?在类中定义复杂的成员函数会使类定义过于复杂,可读性不好 请记住,可以使用函数说明符内联声明成员函数,而不必在类中定义它 考虑到如果编译器将对类中定义的类的成员函数进行非

当我之前阅读内联函数时,它指出内联只是对编译器的一个请求,以替换函数体,而不是调用函数。但是如果函数很复杂(比如递归函数、包含静态变量、开关等),那么编译器将忽略该请求。
因此,即使我们在类内声明函数(如果它是复杂的),编译器也会忽略该请求。那么,如果我们可以让编译器自己的决定自动为我们定义函数,那么在类之外定义函数有什么意义呢?

在类中定义复杂的成员函数会使类定义过于复杂,可读性不好

请记住,可以使用函数说明符内联声明成员函数,而不必在类中定义它

考虑到如果编译器将对类中定义的类的成员函数进行非内联调用,那么对该函数的所有其他要求将与内联函数的要求相同。例如,带有类定义的函数定义可以包含在许多编译单元中


在类之外定义成员函数可以将接口与其实现分离。

原因很多。现在理解所有这些原因对你来说并不重要。当你继续学习C++,并且变得更加有知识和熟练的C++时,你会自动学习和认识到这两种方法之间的许多不同之处。此时不要把时间浪费在这些琐碎的事情上,而要集中精力学习这门语言。related/dupe:。只需在外部定义它们,这样你的类就不会太大,你就看不懂了。
inline
与实际的内联关系不大,更多的是与ODR(一个定义规则)有关。别忘了,通常你需要将接口传递给类,定义,但由于某种原因,无法传递类的工作方式。@类声明中定义的FedericoklezCulloca函数隐式
内联
。你可以直接从C++标准中读取。