In C, encapsulation was accomplished by making things
static in a compilation unit or module. This
prevented another module from accessing the static stuff. (By the way, static data at file-scope is now deprecated
in C++: don’t do that.)
Unfortunately this approach doesn’t support multiple instances of the data, since there is no direct support for making
multiple instances of a module’s
static data. If multiple instances were needed in C, programmers typically used a
struct. But unfortunately C structs don’t support encapsulation. This exacerbates the tradeoff
between safety (information hiding) and usability (multiple instances).
In C++, you can have both multiple instances and encapsulation via a class. The
public part of a class contains the
class’s interface, which normally consists of the class’s public member functions and its friend
functions. The private and/or protected parts of a class contain the class’s implementation, which
is typically where the data lives.
The end result is like an “encapsulated
struct.” This reduces the tradeoff between safety (information hiding) and
usability (multiple instances).
No comments:
Post a Comment