C++把类函数的实现写到头文件能对编译结果有影响吗?
一般.h里写个函数的声明, cpp里写函数的定义, 有些只有一行代码的函数, 写在头文件能少很多工作量.这里讨论的是类内部的函数, 独立的函数情况会不一样.经过研究, 把函数写到头文件并不会增加引用这个dll的模块大小. 也不会减少dll的大小.所以函数都是可以写到头文件的对不对?我看写到头文件的函数也是有导出到lib的.我的问题是, 我担心到函数体写到头文件对编译结果有影响, 我自己试验后, 觉得问题不大, 只有一行的函数写到头文件更方便 get set 这类的.
对编译器的运行效率有影响吗?
对编译结果（运行效率）没有影响，其实函数实现写到cpp主要只是为了编译效率而非运行效率。

因为头文件不光是你自己用，还需要给「用到你的模块」做include的。

所以，如果你的代码写到头文件内，不光你自己得编译一遍，所有include到你头文件的.cpp代码，也都得把你的代码编译一遍。

不光是上面这个问题，假如你的实现，依赖某个特定的库，那么，如果你在 .cpp 内写实现，那么你只需要在你的 .cpp 文件内包含你引用的第三方库头文件即可。

如果你在 .h内写实现，那么你就必须把你引用的第三方库头文件也放进你自己的头文件。如此一来，其它include你的头文件的代码也就被迫include了你用到的第三方库头文件。这会造成一些依赖方面的问题。（比如循环依赖）

所以题主你明白了，函数实现写到cpp，仅仅是为了减少重复编译，提升编译效率。对运行层面影响并不大。

至于代码生成多份的问题可以用 inline 解决。如果在 .h 里边使用 inline 来写函数，那该头文件被多次引用时，此函数只生成一份代码。不会冲突。

inline最初的含义是内联，但其实现在，它本身已经几乎没有原来的含义，毕竟这个函数是否内联，完全是编译器说了算，你说了不算。而它现在的主要用途，就是允许你在头文件内写函数实现，而不会存在重复定义的编译错误。