hello dear
i think the size of the Class very much depends on the Operating system or the compiler you are using to compile the class. On that basis the size of the class will be different for different OS or the compilers
as in some cases it will be 1 byte (may be in 64 bit environment) and some times it will be shown as 2 or 4 bytes and also it depends on the way you are trying to calculate the size of the class as if you are using the sizeof operator then the sizeof() operator can return
at least 1 byte data not 0 bytes.
Why is the size of an empty class not zero?
To ensure that the addresses of two different objects will be different. For the same reason, "new" always returns pointers to distinct objects. Consider:
class Empty { }
void f()
{
Empty a, b
if (&a == &b) cout << "impossible: report error to compiler supplier"
Empty* p1 = new Empty
Empty* p2 = new Empty
if (p1 == p2) cout << "impossible: report error to compiler supplier"
}
There is an interesting rule that says that an empty base class need not be represented by a separate byte:
struct X : Empty {
int a
}
void f(X* p)
{
void* p1 = p
void* p2 = &p->a
if (p1 == p2) cout << "nice: good optimizer"
}
This optimization is safe and can be most useful. It allows a programmer to use empty classes to represent very simple concepts without overhead. Some current compilers provide this "empty base class optimization".
Origional post's URL for the above code :
http://www2.research.att.com/~bs/bs_faq2.html#sizeof-empty[
^]
also here i am embeding a URL of the different website. Is that
OK
if i am not suppose to do that in that case let me know.
GOD Help Programmers/Developers.
Best regards