1

私はこれを知るためだけに求めています-必ずしも私のコードがこの戦略を使用することになるとは限りません。

これに似たクラスがあるとします。

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.

このようなことをしない理由はありますか(コンストラクターで作業が行われる場合)?

4

1 に答える 1

2

オブジェクトが使用されていないからといって、インスタンス化が最適化されるわけではありません。

コンストラクターが空で、オブジェクトが使用されないか、一時的なものとしてのみ作成される場合は、スマートコンパイラーがそれを最適化することができます。あなたの場合、「//すべてのハードワークはここで行われます。」これは当てはまりません。

于 2013-03-08T01:27:09.703 に答える