gpt4 book ai didi

c++ - 在结构/类中使用 static const int

转载 作者:可可西里 更新时间:2023-11-01 15:32:07 27 4
gpt4 key购买 nike

struct A {
static const int a = 5;

struct B {
static const int b = a;
};

};

int main() {
return A::B::b;
}

上面的代码可以编译。但是,如果您阅读 Scott Myers 的《Effective C++》一书(第 14 页);除了声明之外,我们还需要 a 的定义。谁能解释为什么这是一个异常(exception)?

最佳答案

C++ 编译器允许 static const 整数(并且仅限于整数)在它们声明的位置指定它们的值。这是因为基本上不需要该变量,它只存在于代码中(通常是编译出来的)。

其他变量类型(例如 static const char*)通常不能在声明的地方定义,需要单独定义。

要多解释一点,要知道访问全局变量通常需要在较低级别的代码中进行地址引用。但是您的全局变量是一个整数,其大小通常约为地址的大小,并且编译器意识到它永远不会改变,那么为什么还要添加指针抽象呢?

关于c++ - 在结构/类中使用 static const int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1312241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com