The constructs in a C++ program create, destroy, refer to, access, and
manipulate objects
.    [
Note 1: 
A function is not an object, regardless of whether or not it
occupies storage in the way that objects do
. — 
end note]
  
The properties of an
object are determined when the object is created
.     Some objects are
polymorphic (
[class.virtual]); the implementation
generates information associated with each such object that makes it
possible to determine that object's type during program execution
.  For
other objects, the interpretation of the values found therein is
determined by the type of the 
expressions (
[expr.compound])
used to access them
.