当我尝试在主函数中定义某个变量时,我可以将变量定义为:
int main ()
{
constexpr unsigned int VariableName = 10;
}
但是,当我尝试将变量封装在类中时,它不允许我将其写为:
class myClass
{
public:
constexpr unsigned int VariableName = 10;
};
但它确实允许我将其编写为类的静态成员:
class myClass
{
public:
static constexpr unsigned int VariableName = 10;
};
为什么我不能像 constexp dataType VariableName 那样在类中定义变量?为什么在这种情况下我应该总是使用静态?
假设这是被允许的
class myClass
{
public:
constexpr unsigned int VariableName = 10;
};
然后,因为它是
constexpr
并且用 10
初始化,所以它不可能对不同的对象有不同的值。该语言通过强迫您明确说明情况来帮助您:无论如何,它的值对于所有实例都是相同的。如果您希望它在不同的对象中具有不同的值,则无法使其constexpr
。因此,明确声明它没有坏处,反而有好处static
。