- •Основные понятия ооп – класс, объект, поле, метод.
- •Область видимости и инкапсуляция. Указатель this.
- •Сравнение класса и структуры.
- •Конструкторы и деструкторы.
- •Int a; // поле класса
- •Void set_a(int aa); //метод класса
- •Классы в динамическими полями.
- •Конструктор по умолчанию, копирования, инициализации
- •Int a; // поле класса
- •Void set_a(int aa); //метод класса
- •Перегрузка операций и функции друзья.
- •Статические поля и методы класса.
- •Int a; // поле класса
- •Void set_a(int aa); //метод класса
- •Операция как функция. Цель перегрузки операций.
- •Множественное наследование. Достоинство и недостатки.
- •Виртуальные методы. Полиморфизм.
- •Виртуальные методы. Абстрактные классы.
Void set_a(int aa); //метод класса
A operator+(int aa){A temp; temp= this->a+aa; return temp;}; ПРИМЕР ПЕРЕГРУЗКИ И УКАЗАТЕЛЯ THIS
}
Классы в динамическими полями.
Это такой же класс только с поля в нем динамические.
class A{private:Int *a; // поле класса
Public:A(int aa) {a=new int(aa); };//конструктор с параметрами-инициальзации
~A(){delete a}; //деструктор}
Конструктор по умолчанию, копирования, инициализации
Конструктором по умолчанию для класса Х называется такой конструктор, который не принимает никаких аргументов: Х::Х(). class Account {public:// конструктор по умолчанию ...Account();
Конструктор копирования для класса Х это такой конструктор, который может быть вызван с одним единственным аргументом типа X: X::X(const X&) или X::(const X&, int = 0).
Конструктор инициализации. В общем случае предпочтительным методом инициализации является конструктор, который гарантированно будет вызван компилятором для каждого объекта до его первого использования.
class A
{
private:
Int a; // поле класса
Public:
A() {};//конструктор по умолчанию
A(int aa) {a=aa; };//конструктор с параметрами-инициальзации
A(const A &aa){a=a.aa ;}; // конструктор копирования
~A(){a=0}; //деструктор
Void set_a(int aa); //метод класса
A operator+(int aa){A temp; temp= this->a+aa; return temp;}; ПРИМЕР ПЕРЕГРУЗКИ И УКАЗАТЕЛЯ THIS
}
Перегрузка операций и функции друзья.
Функция друзья имеет доступ ко всем нестатическим полям и методам класса в котором находится через параметр-объект класса, которому она дружественна. Она должна быть объявлена в теле класса как friend. Например:class Matrix { friend Matrix Multiply(Matrix m1, Matrix m2);};
Matrix Multiply(Matrix m1, Matrix m2) {} Здесь функция Multiply может обращаться к любым полям и функциям-членам класса Matrix.
Перегрузка функций позволяет вам использовать одно и то же имя для нескольких функций с разными типами параметров.
Int min(int a, int b) {…}
Double min(double a, double b) {…}
Статические поля и методы класса.
Статические поля существуют в одном экземпляре на всю программу (или, в более сложном варианте, — в одном экземпляре на процесс или на поток/нить). Обычные поля создаются по одной копии для каждого конкретного объекта — экземпляра класса.
Статическим называется метод, который существует в классе как в таковом, а не в отдельных его экземплярах. Как и в случае других статических членов, главное преимущество статических методов в том, что они расположены вне конкретных экземпляров класса, не засоряя глобальное пространство приложения.
class A
{static int i;
public: A(){i++} }
class A
{
private:
Int a; // поле класса
Public:
A() {};//конструктор по умолчанию
A(int aa) {a=aa; };//конструктор с параметрами-инициальзации
A(const A &aa){a=a.aa ;}; // конструктор копирования
~A(){a=0}; //деструктор
Void set_a(int aa); //метод класса
A operator+(int aa){A temp; temp= this->a+aa; return temp;}; ПРИМЕР ПЕРЕГРУЗКИ И УКАЗАТЕЛЯ THIS
}
Операция как функция. Цель перегрузки операций.
Операция — это та же функция, но записываемая особым образом. Операции-функции можно вызывать непосредственно, хотя обычно они вызываются косвенно, при использовании перегруженных операций:c3 = c1.operator + (c2); // то же, что c3 = c1 + c2.В отличие от new и delete, которые имеют свои собственные правила, операция-функция должна быть либо нестатической функцией-компонентом, либо иметь как минимум один аргумент типа класса. Операций-функции =, (), [] и -> должны являться нестатическими функциями-компонентами.
Перегрузка оператора состоит в изменении смысла оператора (например, оператора плюс (+), который обычно в C++ используется для сложения) при использовании его с определенным классом.
Наследование. Это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование является важным, поскольку оно позволяет поддерживать концепцию иерархии классов.
Class A{…..}
Class B: public A {…...}
Область видимости предка : предок видит только своё тело.
Наследование. Это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование является важным, поскольку оно позволяет поддерживать концепцию иерархии классов.
Class A{…..}
Class B: public A {…...}
Область видимости предка : предок видит только своё тело.
