内联函数是一种编译提示,注意是给编译器的“提示”,并不能保证你想内联就内联。有inline的关键字去提示编译器可以内联,但编译器实际上是否内联,还取决于这个函数的复杂程度,如果过于复杂比如有循环,就不会内联了。而且跟你说的声明和实现写在一起没太大关系,只是在类定义里写方法体的话,等于加了inline的关键字。
C++内敛函数是类中使用的一个很强有力的概念。如果一个函数被声明为内敛函数,编译器在编译的时候就会在函数调用的地方将函数的实现代码拷贝一份。
如果内敛函数发生改变,那么客户端都需要重新编译,因为编译器需要将内敛函数的副本重新在调用的地方拷贝一份。
要声明内敛函数的话,需要使用关键字inline,放在函数名之前。需要注意的是,加上关键字inline,程序本身只能“请求”将该函数声明为内敛函数,具体能不能真正变成内联是由编译器决定的。
类中定义的函数都是以内联函数定义的方式实现的,即使它们没有加上关键字inline。另外,内联函数的函数的声明和实现是在一起的,不能够分开,因为在运行的时候,是将代码进行替换的。而且,一般来说,内联函数是定义在头文件之中的。
楼主给出的代码是一个简单的C++文件,并没有用到内联。如果在func前加上关键字inline,则是将其定义为了inline函数。内联函数的生命和实现是在一起的,也就不存在实现部分放在main()函数后面的问题了。