Classes are the building blocks of Object Oriented Programming in C++ language. Class gives us the ability to simplify certain types of programs by creating objects that forms the basis of Object Oriented programming.
Just like identifiers of built-in data types (ex. int, char etc.) are known as variables similarly identifiers (instances) of class are known as Objects.
Classes in C++ have two parts, data and functions; these are known as data members and member function respectively. Member functions are usually the means of accessing and modifying data members.
Anything inside the class can be either private to the class or public to the program. Classes may have both type of members (private and public) at the same time.
General form of Class:
class class_name { access-specifier: member… member… member… access-specifier: member… member… member… }object-list;
Few points to remember:
-
Access-specifier can be anyone of the three private, public and protected.
-
Anything after an access-specifier has that type of access until another access-specifier is encountered.
-
There can be any number of access-specifier, but in general all the members having same access are grouped together under one access-specifier.
-
So,
class c1 { private; int a; int b; public: int c; private: int d; };
Should be written as
class c1 { private: int a; int b; int d; public: int c; };
- Object list is optional which is used to declare objects of the class.
private and public Access-Specifiers
private tells the compiler that the members following it are private to the class and can not be accessed by other parts of the program.
Ex.
class c1
{
private:
int a;
int b;
void func();
};
Here, the variable a, b and function func() can can only be accessed by the members of the class c1.
On the other hand, public members are accessible to the other parts of the program also.
class c1
{
private:
int a;
int b;
void func();
public:
void func2();
int c;
}obj;
Here the variable c and function func2() are accessible from other parts of the program, but the private members are only accessible from the public function func2().
The public members of the class (i.e. func2() and c) can be accessed from other parts of the program with the help of the following syntax:
obj.c=10;
functions (public) are also accessed like this:
obj.func2();
A few points to remember:
-
Please note that in the previous example a, b and func() can not be accessed from other parts of the program with the help of (.) operator.
-
Member functions can simply access any of the private and public members of the class without the use of (.) operator.
-
For example, if func2() is a member function class c2 then it can access other members (both private and public) as shown below:
func2() { a=b; b=c; func(); }
Enough talking… Now let us move on to a simple program to illustrate:
-
How to define a class and its objects in C++.
-
Use of private and public access-specifiers.
-
How to define and use member functions.
//C++ Program
#include<stdio.h>
#include<iostream.h>
class employee
{
private:
char name[30];
int emp_no,age;
float salary, net_salary, tax;
void calculate()//in line function
//used for the short ones
{
net_salary=salary-tax;
}
public:
void input();
void output();
};
//----FUNCTION DEFINITION STARTS----
void employee::input()
{
printf("Enter Name: ");
gets(name);
printf("Enter Employee Number: ");
cin>>emp_no;
printf("Enter Age: ");
cin>>age;
printf("Enter Salary: ");
cin>>salary;
printf("Enter Tax Paid: ");
cin>>tax;
//the function below can only be invoked
//from the member function like here
//and not from the other parts of the program
calculate();
}
void employee::output()
{
printf("\n\n EMPLOYEE DETAILS\n");
//'\n' is used to print to the next line
printf("Name: %s\n", name);
printf("Age: %d\n", age);
printf("Employee Number: %d\n", emp_no);
printf("Net Salary: %f\n", net_salary);
}
//----FUNCTION DEFINTION ENDS----
void main()
{
employee e1;
e1.input();
e1.output();
}
A few points about the program:
-
Notice how member functions are used to modify data members of the class.
-
Notice the use of private function calculate(), that can only be accessed from other member function (i.e. input() and output()).
-
Notice how the member functions are declared and defined.
This article has gone a bit too long but once the discussion on topics like classes in C++ starts it never seems to end -;)
Good-bye for now!