问题听起来很奇怪,我的意思是当一个类仅在cpp文件中定义时,因为它更像是一个辅助类,用于实现另一个类,并且不值得在其私有部分中。我理解内联构造函数和析构函数是一种不好的做法,但是这种情况如下所示,如下所示?非常感谢你
编辑:我应该重新编写它。在某些情况下,内联构造函数和析构函数会意外地导致膨胀的代码(如Effective C ++ Item 30中所述,"理解内联的内部细节")。但是我想知道这样的内联是否也导致了 // my_class.cpp
#include <my_class.h>
namespace {
class Helper
{
public:
Helper() {...} // should I inline the constructor here?
~Helper() {...} // should I inline the destructor here?
};
/* alternative implementation looks like
Helper::Helper()
{...}
Helper::~Helper()
{...}
*/
} // end of anonymous namespace
// implementation of my_class
答案 0 :(得分:2)
这可能是一个有争议的问题。另一个讨论here在很大程度上讨论了这个问题。基本的看法是编译器可能会忽略你的&#34;内联&#34;或者它可以选择&#34;内联&#34;函数/构造函数/没有你输入的任何东西。内联命令只是建议编译器可以自由忽略。
TL; DR去吧;它可能不会有所作为。
答案 1 :(得分:2)
无论如何都很好。如果辅助函数因为没有内联而成为性能瓶颈,您可以考虑将其作为内联函数。
我很多时候发现Helper
类的单个实例足以供主类使用。因此,无论构造函数和析构函数是否内联都没有任何区别。
namespace {
class Helper
{
public:
Helper() {...}
~Helper() {...}
};
// The sole instance of the Helper class.
static Helper helper;
}
void main_class::foo()
{
helper.foo();
}