Как программист, вам почти никогда не нужно знать размер объекта в C ++. Например:
class A {
... // member data
};
void f() {
A a; // allocate on stack
A * p = new A; // allocate on heap
}
Ни в том, ни в другом случае не требуется знания размера, необходимого программисту - конечно, компилятор должен это знать.
Обратите внимание, что как бы вы ни создавали объект, его размер должен быть известен компилятору на момент создания:
class B; // forward declaration - no size:
void f() {
B b; // compilation error
B * p = new B; // compilation error
}