Now
that you’ve seen an initial example, it’s time to step back and
take a look at some terminology. The act of bringing functions inside
structures is the root of what C++ adds to C, and it introduces a new way of
thinking about structures: as concepts. In C, a structure is
an agglomeration of data, a way to package data so you can treat it in a clump.
But it’s hard to think about it as anything but a programming
convenience. The functions that operate on those structures are elsewhere.
However, with functions in the package, the structure becomes a new creature,
capable of describing both characteristics (like a C
struct
does)
and
behaviors. The concept of an object, a free-standing, bounded entity that can
remember
and
act, suggests itself.
In
C++, an object is just a variable, and the purest definition is “a region
of storage” (this is a more specific way of saying “an object must
have a unique identifier,” which in the case of C++ is a unique memory
address). It’s a place where you can store data, and it’s implied
that there are also operations that can be performed on this data.
Unfortunately
there’s not complete consistency across languages when it comes to these
terms, although they are fairly well-accepted. You will also sometimes
encounter disagreement about what an object-oriented language is, although that
seems to be reasonably well sorted out by now. There are languages that are
object-based,
which means they have objects like the C++ structures-with-functions that
you’ve seen so far. This, however, is only part of the picture when it
comes to an object-oriented language, and languages that stop at packaging
functions inside data structures are object-based, not object-oriented.