[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
Re: Re: [linux-india-programmers] C++ question
> I really should not be seeing the value of var, right?
If you had
struct X
{
int a ;
} ;
X y ;
then,
(int *) &y would actually give you &(y.a). A class is just a structure,
internally. Non-inlined functions are replaced by function pointers;
overloaded names are resolved using mangling; access to public and
private variables are handled using typing; there may be "hidden" members,
sometimes, as will happen in derived classes with virtual functions; a
derived class will turn out to be a larger structure than the class
definition would lead you to believe; but a class is essentially a structure.
So it all eventually depends on how the internal structure definition
is; if the declaration order is maintained and all generated members are
inserted after declared members, you'll see the behaviour you're seeing.
I don't think there are guarantees about that tho'.
It may be instructive to see the output of the AT&T C++ to C translator,
which was one of the early ways of programming with C++; it is a frontend
which converts all your C++ code to C code, and uses a C compiler along
with a library. If you can get hold of that, you can see how it handles
classes.
I guess the C++ ARM also has something about this; would anyone confirm?
Venkatesh