内联函数声明和定义必须放在同一文件里面吗?为什么?

来源:百度知道 编辑:UC知道 时间:2024/05/19 15:34:30
内联函数声明和定义必须放在同一文件里面吗?为什么?

嗯.好比这样
//这是b.h
class A{int a();};
inline int A::a(){}
------------------------内联成员函数对于编译器是当前文件可见的.
//这是b.cpp
#include b.h
inline int A::a(){}
--------------------------------内联成员函数对于编译器是当前文件可见的,
含main的文件
c.cpp
main(){A cs;int i =cs.a();}
如果你把内联成员函数写在了b头文件中.则通过.因为编译器在b头文件里面找到了这个函数,并且进行了展开.
如果你把内联成员函数写在了b.cpp源文件中.则会出现link 2019(找不到该函数)--在vs2005平台下.因为编译器找不到他.

请记住.内联成员函数包括构造是对于当前文本可见..