If a function (or simply a variable like int) defined in a header say "func.h", and being included in two object files a.o and b.o, then there will be duplication error when linking a.o and b.o. But this is not true for class, i.e. when a class definition in "class.h" and included both by a.o and b.o, there will be no problem.
What differences in compiling process for function/variables and class lead to this result? And what if two classes having the same name being linked?