First thing to note is that in C++ the term "object" includes things like integers.
Next thing is, structures are laid out pretty much how you'd expect. One member following the next in memory with an undefined amount of padding between.
When a class inherits from another then the class will start with its base class, which in turn may start with a base class of its own. Thus Derived* and Base* will be the same value in cases of single inheritance. Following the base's area (its members) will be the derived class's members in turn, with an undefined amount of padding between them.
When a class inherits from more than one base then things become a little different. The base areas are laid out in memory sequentially. Base1 followed by Base2, etc...after which the derived class's members are laid out in turn with an undefined amount of padding between them.
If the object is of a POD class then it is guaranteed that the first member in the class will be at the location in memory the object resides. This means that Class* and Class->firstMember* will be the same value. I don't believe this applies to non-POD entities.
In the case of polymorphic classes, those with virtual functions, an additional secret member will be created called the vtable. This isn't guaranteed by anything in the standard, but is pretty much the only way to do it and follow the rules that are. Each class has this, so if your class has bases then it will have its table and you'll have yours for additional functions.
All member functions will have their names mangled and parameters modified to accept this
as the first argument. This happens behind the scenes as the compiler builds stuff. Virtual functions will be pointed at by the vtable. Non-virtuals will simply be resolved statically and used directly.
Static members are not members of the object created by a class. A static member is simply a global variable with different scope.