1. Инкапсуляция – это объединение данных и обрабатывающих их функций (методов) в одном классе как типе объектов. Методы могут быть определены внутри класса. Такая форма описания делает метод встроенным по умолчанию. Второй метод описания заключается в том, что внутри класса описывается прототип, а описание метода размещается вне тела класса. Пример класса суммы чисел:
class Sum
{
int x,y,s;
public:
void getx(int x1) { x=x1; } // описание метода
void gety(int y1) { y=y1; } // описание метода
void summa(); // прототип метода
};
// описание метода
void Sum::summa()
{
s=x+y;
cout<<”\nСумма “<<x<<” и ”<<y<<” равна: ”<<s;
}
Под переменные x, y, s при описании каждого объекта класса Sum отводится динамическая память. То есть, эти компоненты в каждом из объектов будут располагаться в разных ячейках памяти. Можно описать также статические объекты, которые будут доступны во всех объектах данного класса. В этом случае память под данный объект не выделяется, и память под такие объекты надо выделять вручную. Например, пусть в классе Student мы описали объект
static int noOfStudents;
Мы должны сами выделить для нее место, например, с помощью оператора
int Student::noOfStudents=0;
Статическими могут быть объявлены и функции. Понятно, что они не могут прямо обращаться к компонентам этого класса, так как эти компоненты принадлежат конкретным объектам данного класса.
2. Наследование – это способность классов C++ перенимать свойства уже существующих классов. То есть, если при определении класса он включает в себя другой класс, то мы получаем доступ к объектам и этого класса.
3. Полиморфизм – это способность решать, какая из перегруженных функций-членов должна быть вызвана в зависимости от текущего типа объекта.