C++中为什么说即使一个常量静态成员在类内部被初始化了,通常情况下也应该在类的外部定义一下该成员。

比如这样:
class E{
static const int i = 7;
};
const int E::i;

int main()
{
E e;
return 0;
}
primer中说:如果某个静态成员的应用场景仅限与编译器可以替换他的值的情况,则一个初始化的const 或constexpr static不需要分别定义。相反,如果我们将他用于值不能替换的场景中,则该成员必须有一条定义语句。

常量静态成员在类内部被初始化,这里是不是错了,不应该写常量二字, 否则怎么可能再次定义?
程序运行后 在类里面定义和在类外部定义是不同的, 全局区是在程序运行前就分配空间,而写在类里面是不可以称为初始化,那个只能说为修改下原值而已追问

比如这样:
class E{
static const int i = 7;
};
const int E::i;

int main()
{
E e;
return 0;
}
primer中说:如果某个静态成员的应用场景仅限与编译器可以替换他的值的情况,则一个初始化的const 或constexpr static不需要分别定义。相反,如果我们将他用于值不能替换的场景中,则该成员必须有一条定义语句。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答