首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个编译和link的有关问题

2012-02-05 
一个编译和link的问题类help两份完全相同的实现分别放2个cpp里,分别调test1::bb(),和test2::cc()我们发现,

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

热点排行