gpt4 book ai didi

c++ - 仅包含编译时常量的类的大小

转载 作者:太空狗 更新时间:2023-10-29 19:47:11 25 4
gpt4 key购买 nike

如果我有一个只包含编译时常量的类,例如,

class A {
static const int x = 1;
static const int y = 2;
static const int z = 3;
};

我相信情况是这样的,只要不获取常量的地址,它们就可以(将?)在使用它们的编译时被替换,并且不会占用可执行文件中的任何空间(作为常量也就是说,显然数字本身将不得不出现)。如果是这种情况,是否也可以优化该类?而且,如果某些东西继承自 class A,但仍然只使用常量本身而不获取它们的地址,这会改变吗?

哦,假设在非继承版本中,除了作为访问常量的一种方式之外,该类实际上并没有在任何地方使用它自己。

谢谢。

最佳答案

这些变量是否是const并不重要;它们是静态的,因此无论如何它们都不会影响类的大小。

sizeof(A) 不能为零,因此如果您创建 A 的实例,它的大小必须至少为一个字节。但是,将 A 作为基类并不一定会增加派生类的大小,因为“基类子对象的大小可能为零”(C++03 §1.8/5)。

关于c++ - 仅包含编译时常量的类的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3225733/

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