繁体   English   中英

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

[英]inline constructor and destructor in cpp file

听起来好像很奇怪,我的意思是,当仅在cpp文件中定义一个类时,因为它更多地是用于实现另一个类的帮助程序类,因此不应该放在其私有部分中。 我知道内联构造函数和析构函数是一种不好的做法,但是这种情况如何呢? 非常感谢你

编辑:我应该改写它。 在某些情况下,内联构造函数和析构函数会意外导致膨胀代码(如有效C ++项目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

这可能是有争议的。 这里的另一个讨论很大程度上对此进行了讨论。 基本的好处是,编译器可以忽略您的“内联”,也可以选择在没有您输入的情况下“内联”函数/构造函数/任何内容。 内联命令只是建议编译器可以忽略。

TL; DR加油! 它可能不会有所作为。

无论哪种方式都很好。 如果辅助函数由于没有被内联而成为性能瓶颈,那么您可以考虑使其成为内联函数。

很多时候,我发现Helper类的单个实例足以供主类使用。 因此,构造函数和析构函数是否内联根本没有任何区别。

namespace {
    class Helper
    {
        public: 
            Helper() {...}
            ~Helper() {...}
    };

    // The sole instance of the Helper class.
    static Helper helper;
}

void main_class::foo()
{
   helper.foo();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM