У меня вопрос по C ++. Я написал следующий класс:
class c
{
int f(int x, int y){ return x; }
};
sizeof () класса c возвращает "1". Я действительно не понимаю, почему он возвращает 1.
Пытаясь лучше понять, что происходит, я добавил еще одну функцию:
class c
{
int f(int x, int y){ return x; }
int g(int x, int y){ return x; }
};
Теперь меня действительно смутило следующее! sizeof (c) по-прежнему равен 1 (!?!?!?!). Итак, я предполагаю, что функции не меняют размер класса, но почему ??? а почему размер 1? И это зависит от компилятора?
Спасибо! : -)
Его размер равен 1, потому что он не может быть 0, иначе два объекта этого типа не были бы адресуемыми (не могли бы различить их адреса)
1 означает 1 байт. И резонанс в том, что методы не хранятся внутри объекта. Они используются объектами , но не хранятся в них. Только члены класса хранятся в объектах. Попробуйте добавить простой int
член или что-то еще и посмотрите, что произойдет.