我知道C++ 11允许使用constexpr指定编译时的表达式,而不是运行时。什么时候应该将构造函数设置为constexpr?
我知道这也可以为类的构造函数完成。 但是,这个构造函数必须初始化这个类的所有成员,以便在编译期间用作constexpr,并且它调用的任何函数也应该被标记为constexpr。
但是什么时候将其构造函数设置为constexpr,并且除了轻微优化以外是否还有其他好处?
这是否意味着,如果我可以,我应该始终将我的构造函数设置为constexpr?
我知道C++ 11允许使用constexpr指定编译时的表达式,而不是运行时。什么时候应该将构造函数设置为constexpr?
我知道这也可以为类的构造函数完成。 但是,这个构造函数必须初始化这个类的所有成员,以便在编译期间用作constexpr,并且它调用的任何函数也应该被标记为constexpr。
但是什么时候将其构造函数设置为constexpr,并且除了轻微优化以外是否还有其他好处?
这是否意味着,如果我可以,我应该始终将我的构造函数设置为constexpr?
通过使构造函数constexpr
,您允许用户创建constexpr
对象,并在他们自己的常量表达式中使用它们。这使得班级在某些情况下更友好。例如,在编写嵌入式系统时,如果可能,您想将数据放入只读存储器。
因此,从使课程变得灵活和尽可能普遍有用的角度来看,如果可以的话,您应该这样做。
如果类成员可以被实例化为'constexpr',你能否只声明一个构造函数'constexpr'? – 2014-11-14 15:09:57
@GiovanniBotta:没错。 – 2014-11-14 15:17:40
一个可能的con可能是使用了许多'constexpr'对象增加了编译时间。这就是*不*说它永远不值得。 – Snps 2014-11-14 15:06:10