如何调用类似函数的类(构造函数完成所有工作的类)

时间:2013-03-08 01:12:35

标签: c++

  

我只是想知道这一点 - 不一定我的代码最终会使用这种策略。

假设我有一个类似于此的类:

class Calc
{
public:
    Calc( int &X, int &Y, CalcType aType )
    {
        int h = Helper( X );
        // All the hard work will be done here.  
    }

    int Helper( int I ) { // Do something }

    enum CalcType
    {
        Add,
        Sub,
        Mul,
        Div
    };
};

优化会删除此调用:

Calc( X, Y, Calc::Add );

它会删除它:

Calc iCalc( X, Y, Calc::Add ); // iCalc will be unused hence after.

有什么理由不做这样的事情(在构造函数中完成工作)?

1 个答案:

答案 0 :(得分:2)

答案是否定的,仅仅因为未使用对象并不意味着实例化将被优化出来。

如果构造函数为空且对象从未使用过或仅作为临时对象创建,则智能编译器可以对其进行优化。在你的情况下,“//所有艰苦的工作都将在这里完成。”事实并非如此。