cpp文件中的内联构造函数和析构函数

时间:2015-11-24 23:32:24

标签: c++

问题听起来很奇怪,我的意思是当一个类仅在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

2 个答案:

答案 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();
}