gpt4 book ai didi

c++ - 运算符方法是否占用 C++ 对象中的内存?

转载 作者:行者123 更新时间:2023-11-30 01:19:13 24 4
gpt4 key购买 nike

假设我有一些简单的类/结构,除了数据和一些选定的运算符外什么都没有。如果我理解,C++ 中只有数据的基本结构,就像 C 一样,占用与成员一样多的内存。例如,

struct SomeStruct { float data; }
sizeof(SomeStruct) == sizeof(float); // this should evaluate to true

我想知道的是,向类中添加运算符是否会使对象在内存中变大。例如

struct SomeStruct
{
public:
SomeStruct & operator=(const float f) { data = f; return this; }
private:
float data;
}

sizeof(SomeStruct) == sizeof(float) 的计算结果是否仍然为真?是否有任何运算符/方法不会增加内存中对象的大小?

最佳答案

结构不一定与其成员一样大(考虑填充和对齐),但你基本上是正确的,因为:

函数不是数据,不“存储”在对象类型中。

也就是说,在向类型添加虚函数的情况下,请注意添加虚表指针。这是该类型的一次性大小增加,并且在您添加更多虚函数时不会重新应用。

关于c++ - 运算符方法是否占用 C++ 对象中的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21206536/

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