类中的静态 constexpr 定义与主函数中的定义

问题描述 投票:0回答:1

当我尝试在主函数中定义某个变量时,我可以将变量定义为:

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 那样在类中定义变量?为什么在这种情况下我应该总是使用静态?

c++ class oop static constexpr
1个回答
0
投票

假设这是被允许的

class myClass
{
public:
    constexpr unsigned int  VariableName = 10;
};

然后,因为它是

constexpr
并且用
10
初始化,所以它不可能对不同的对象有不同的值。该语言通过强迫您明确说明情况来帮助您:无论如何,它的值对于所有实例都是相同的。如果您希望它在不同的对象中具有不同的值,则无法使其
constexpr
。因此,明确声明它没有坏处,反而有好处
static

© www.soinside.com 2019 - 2024. All rights reserved.