четверг, 21 октября 2010 г.

23. Каков размер «пустого» объекта?

class A{
}
В теории не меньше одного байта. На практике ровно один байт. Не ноль потому, что, согласно спецификации, каждый объект должен иметь свой адрес. Объекты с нулевым размером запросто могли иметь один и тот же адрес.

2 комментария:

  1. #include

    using namespace std;

    class A
    {
    public:
    virtual void foo()
    {
    cout << "A";
    }
    };

    class B : public A
    {
    };

    int main()
    {
    A a;
    B b;
    cout << sizeof(a) << " " << sizeof(b) << endl;
    return 0;
    }

    В этом примере оба объекта будут по 4 байта, за счет указателя на vtable, как я понял

    ОтветитьУдалить

Можно использовать теги <b>, <i>