类的成员函数放在头文件中定义和放在源文件的区别是什么?解决方法

类的成员函数放在头文件中定义和放在源文件的区别是什么?
rt.
悉心请教.

------解决方案--------------------

成员函数一般是不可以在头文件中定义的,只能在头文件中声明。因为函数只能有一次定义,而可以有多次声明,当头文件被多次包含的时候,如果头文件中有函数定义就违背了这个原则~
-------------------------------------------------

#ifndef XXX_H
#define XXX_H
class CA {
......
}
#endif
如果头文件中没有这样定义的话,多次包含一样编译不通过.

成员函数在不在头文件中定义,其实都没多大关系,但如果你的程序是提供给别人作为库,而在头文件中定义成员函数,别人就会看到你程序的实现,在.cpp中定义,人家使用时调用的是库文件,看到的只是你的头文件中的声明,而不知道你是怎么实现的(呵呵,商业机密).
还有一些规则是,有些成员函数是必须在类声明中定义的,如类的静态成员函数,inline函数.
------解决方案--------------------
我的理解是:
如果函数在头文件中定义(假设这个头文件叫a.h),那么当这个函数有改动时,所有包含了a.h文件的.cpp文件将全部需要被重建,如果这个头文件被多次引用的话,带来的副作用将非常的大。
但如果函数不在.h中定义的话,则改动带来的副作用将小得多,只有当前改动的文件从新编译一下即可了