为什么在这里需要静态?

马克兹

为什么我可以这样写:

class VoiceManager
{
public:
    static const int mMaxNumOfVoices = 16;
    Voice mVoices[mMaxNumOfVoices];

private:
};

但我不能使用这个:

class VoiceManager
{
public:
    const int mMaxNumOfVoices = 16;
    Voice mVoices[mMaxNumOfVoices];

private:
};

它说:“非静态成员引用必须相对于特定对象

但是在这两种情况下,mMaxNumOfVoicesaconstis会在初始化之前先被mVoices初始化(编译器遵循声明顺序,不是吗?)。

但这需要static为什么?

轨道轻赛

数组边界必须在编译时知道。尽管您的初始化代码写在代码中,但构造函数可以在运行时覆盖它。因此,您的非static成员变量不是编译时常量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在这里需要锁?

来自分类Dev

为什么在这里需要分号?

来自分类Dev

为什么在这里需要'break;'?

来自分类Dev

为什么我在这里不需要SFINAE

来自分类Dev

为什么红宝石在这里需要括号?

来自分类Dev

为什么在这里需要类型注释?

来自分类Dev

为什么在这里需要花括号?

来自分类Dev

为什么在这里似乎需要分号?

来自分类Dev

为什么在这里需要类型注释?

来自分类Dev

为什么在这里需要立即执行?

来自分类Dev

为什么在这里需要显式强制转换

来自分类Dev

为什么在这里需要Queue.join()?

来自分类Dev

Objective-C,为什么我需要在这里而不是在这里放星号

来自分类Java

为什么使用原子在这里?

来自分类Dev

为什么在这里发生僵局

来自分类Dev

为什么在这里抛出异常?

来自分类Dev

为什么不会 for ... 在这里循环?

来自分类Dev

为什么在这里的盒子?

来自分类Dev

为什么在这里得到NullPointerException?

来自分类Dev

为什么perldoc在这里失败?

来自分类Java

为什么在这里使用克隆?

来自分类Dev

为什么在这里不确定?

来自分类Dev

为什么WlanOpenHandle()在这里失败?

来自分类Linux

为什么在这里获得SIGABRT?

来自分类Dev

为什么在这里使用锁?

来自分类Dev

为什么python在这里运行?

来自分类Dev

为什么$ .isEmptyObject在这里无效

来自分类Dev

为什么在这里使用const静态变量odr?

来自分类Dev

为什么在这里允许使用非const初始化静态变量?