一个编译和link的有关问题

一个编译和link的问题
类help两份完全相同的实现分别放2个cpp里,分别调test1::bb(),和test2::cc()我们发现,他们分别会调各自cpp中   help(){}   构造,但是析构却只调  
help1.cpp中的   ~help(){};请问是为什么?

help1.cpp------------------------
#include   "help1.h "
class   help
{
public:
help(){};
~help(){};
};

int   test1::bb()
{

help1   obj;
return   obj.aa();
}

help2.cpp------------------------
class   help
{
public:
help(){};
~help(){};
};

int   test2::cc()
{

help1   obj;
return   obj.aa();
}

------解决方案--------------------
归根究底,你违背了“一次定义”原则,help类被你提供了2个不同的实现。
而inline又让你避开了C++对多次定义的一些检查。
不要这么做。
探讨其中的深层原因也没有太多实际意义。