c ++ sizeof () класса с функциями

У меня вопрос по 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? И это зависит от компилятора?

Спасибо! : -)

22
задан TCS 30 November 2012 в 19:57
поделиться

2 ответа

Его размер равен 1, потому что он не может быть 0, иначе два объекта этого типа не были бы адресуемыми (не могли бы различить их адреса)

11
ответ дан 29 November 2019 в 04:01
поделиться

1 означает 1 байт. И резонанс в том, что методы не хранятся внутри объекта. Они используются объектами , но не хранятся в них. Только члены класса хранятся в объектах. Попробуйте добавить простой int член или что-то еще и посмотрите, что произойдет.

1
ответ дан 29 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: