我知道c ++ 11允许使用constexpr为编译时而不是运行时指定表达式。
我知道这也可以用于类的构造函数。 但是,此构造函数必须初始化类的所有成员,以便用作constexpr(在编译时),并且它调用的任何函数也应标记为constexpr。
但是什么时候会将他的构造函数设置为constexpr,除了稍微优化之外还有其他任何好处吗?
这是否意味着,如果我可以,我应该总是将我的构造函数设置为constexpr?
答案 0 :(得分:12)
通过创建构造函数constexpr
,您允许用户创建constexpr
个对象,并在它们自己的常量表达式中使用它们。这使得该课程在某些情况下更友好;例如,在为可能的情况下将数据放入只读存储器的嵌入式系统进行编程时。
因此,从使课程尽可能灵活且通常有用的角度来看,如果可以的话,你应该这样做。