一个编译和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++对多次定义的一些检查。
不要这么做。
探讨其中的深层原因也没有太多实际意义。
类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++对多次定义的一些检查。
不要这么做。
探讨其中的深层原因也没有太多实际意义。