Writing classes
When you use built-in types, the data is directly available to whatever code has access to that data. C++ provides a mechanism (const
) to prevent write access, but any code can use const_cast
to cast away const
-ness. Your data could be complex, such as a pointer to a file mapped into memory with the intention that your code will change a few bytes and then write the file back to disk. Such raw pointers are dangerous because other code with access to the pointer could change part of the buffer that should not be changed. What is needed is a mechanism to encapsulate the data into a type that knows what bytes to change, and only allow that type to access the data. This is the basic idea behind classes.
Reviewing structures
We have already seen one mechanism in C++ to encapsulate data: struct
. A structure allows you to declare data members that are built-in types, pointers, or references. When you create a variable from that struct
, you are creating an instance of the structure...