A class in C++ is a user-defined data type that binds data and the functions that operate on the data together in a single unit. Like other user-defined data types, it also needs to be defined before using its objects in the program. A class definition specifies a new data type that can be treated as a built-in data type.
The syntax for defining a C++ class is
class class_name { private: variables; functions; public: variables; functions; protected: variables; functions; } ;
where,
class, private, public, protected = C++ keywords
class_name = the name of the class
variables = variables (data) of the class
functions = functions of the class
The variables and functions declared within the curly braces are collectively known as members of the class. The variables declared in the class are known as data members, while the functions declared in the class are known as member functions.
The keywords private, public and protected are known as access Specifiers (also known as visibility mode). Each member of a class is associated with an access Specifiers. The access Specifiers of a member controls its accessibility as well as determines the part of the program that can directly access the member of the class. When a member is declared private, it can be accessed only inside the class while a public member is accessible both inside and outside the class. Protected members are accessible both inside the class in which they are declared as well as inside the derived classes of the same class.
Once an access specifier has been used, it remains in effect until another access specifier is encountered or the end of the class declaration is reached. An access specifier is provided by writing the appropriate keyword (private, public or protected) followed by a colon ‘ : ‘ . Note that the default access specifier of the members of a class is private. That is, if no access specifier is provided in the class definition, the access specifier is considered to be private.
To understand the concept of defining a class, consider this example.
Example: A simple class definition
class book { //private by default char title [30] ; //variables declaration float price; public: void getdata(char [],float); //function declaration void putdata (); } ;
In this example, a class named book with two data members title and price and two member functions getdata() and putdata() is created. As no access specifier is provided for data members, they are private by default, whereas, the member functions are declared as public. It implies that the data members are accessible only through the member functions while the member functions can be accessed anywhere in the program.
Generally, data members are declared as private and member functions are declared as public. Declaring the data members as private hides them from the rest of the program. This safeguards the data members and prevents any accidental changes to them by other parts of the program, thereby, implementing the concept of data hiding of object-oriented programming. Similarly, specifying the member functions as public, provides an interface that is visible and accessible to the other parts of the program.
Note that it is useful to declare the member functions as private if they are to be accessed only within other member functions of the same class and not outside the class. In addition, all the members (data as well as functions) of a class can be declared as private. However, such a class prevents its access from the outside world and does not serve any purpose.