构造函数constexpr
时间: 2023-10-19 12:09:14 浏览: 90
constexpr构造函数是一种特殊的构造函数,它可以在编译时被求值为常量表达式。要成为constexpr构造函数,它必须满足以下要求:
- 类必须是一个字面值常量类。
- constexpr构造函数必须初始化所有的数据成员。
- constexpr构造函数的函数体一般来说应该是空的,或者只包含一个返回语句。
constexpr构造函数的作用是生成constexpr对象,这种对象在编译时就已经被确定了其值,因此可以在编译期间进行优化。
例如,在以下代码中,类Debug的构造函数就是constexpr构造函数:
```cpp
class Debug {
private:
bool hw;
bool io;
bool other;
public:
constexpr Debug(bool b = true) :hw(b), io(b), other(b) {}
constexpr Debug(bool h, bool i, bool o) : hw(h), io(i), other(o) {}
constexpr bool any() { return hw || io || other; }
void set_io(bool b) { io = b; }
void set_hw(bool b) { hw = b; }
void set_other(bool b) { other = b; }
};
```
在上述代码中,Debug类的构造函数被声明为constexpr,因此可以在编译时用于生成constexpr对象。constexpr对象在编译时就已经被确定了其值,所以可以在编译期间进行优化。
阅读全文