Constexpr用于创建对象

时间:2017-06-21 13:59:27

标签: c++ constexpr

我试图弄清楚使用constexpr而不是正常情况创建对象是否会带来性能提升。

以下是constexpr的代码段。

class Rect
{
    const int a;
    const float b;
public:
    constexpr Rect(const int a,const float b)
    : a(a),b(b){}
};

int main()
{
     constexpr Rect rect = Rect(1,2.0f);
}

没有constexpr

class Rect
{
    int a;
    float b;
public:
    Rect(int a, float b)
    : a(a),b(b){}
};

int main()
{
    Rect rect = Rect(1,2.0f);
}

我期待constexpr的代码会少很少,因为内存应该在编译时初始化。

我正确使用constexpr吗?如果不是这样,你可以使用constexpr在编译时创建对象,然后在没有任何运行时开销的情况下使用它们吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

事实证明,我有一些标题,它们负责代码的相似性。

答案是两种情况之间存在很大差异。

  

在没有优化的情况下进行编译时,生成的代码中有there is a substantial difference ...                                                                     -cdhowie

相关问题