Предположим, что у меня есть простые классы/структуры без каких-либо данных, кроме данных и нескольких операторов. Если я понимаю, базовая структура с только данными на C++, как и C, занимает столько же памяти, сколько и члены. Например,ли методы оператора занимают память в объектах C++?
Что мне интересно, если добавление операторов в класс сделает объект более крупным в памяти. Например
struct SomeStruct
{
public:
SomeStruct & operator=(const float f) { data = f; return this; }
private:
float data;
}
это будет по-прежнему верно, что sizeof(SomeStruct) == sizeof(float)
оценивается как истина? Существуют ли какие-либо операторы/методы, которые не будут увеличивать размер объектов в памяти?
Что относительно виртуальных функций? – SirGuy
@GuyGreer: Ну, ладно, у вас есть vtable для рассмотрения в некоторых реализациях. Но сами функции никогда не хранятся в объекте. –
Можете ли вы объяснить, что вы подразумеваете под дополнением и выравниванием? Есть ли какая-нибудь причина, например, 'SomeStruct structArray [100]' будет иметь другой размер от 'float floatArray [100]'? – xaviersjs