Most data-member declarations appear after the private access specifier. Variables or functions declared after access specifier private
(and before the next access specifier if there is one) are accessible only to member functions of the class for which they’re declared (or to “friends” of the class, as you’ll see in Chapter 9). Thus, data member courseName
can be used only in member functions setCourseName
, getCourseName
and displayMessage
of class GradeBook
(or to “friends” of the class, if there are any).
Error-Prevention Tip 3.1
Making the data members of a class private and the member functions of the class public facilitates debugging because problems with data manipulations are localized to either the class’s member functions or the friends of the class.
Common Programming Error 3.2
An attempt by a function, which is not a member of a particular class (or a friend of that class) to access a private member of that class is a compilation error.
The default access for class members is private
so all members after the class header and before the first access specifier (if there are any) are private
. The access specifiers public
and private
may be repeated, but this is unnecessary and can be confusing.
Declaring data members with access specifier private
is known as data hiding. When a program creates a GradeBook
object, data member courseName
is encapsulated (hidden) in the object and can be accessed only by member functions of the object’s class. In class GradeBook
, member functions setCourseName
and getCourseName
manipulate the data member courseName
directly.