Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP второй семестр.doc
Скачиваний:
4
Добавлен:
23.09.2019
Размер:
187.9 Кб
Скачать

Параграф 2 Конструкторы и деструкторы (стр 272)

Конструктор - метод класса предназначенный для инициализации объектов при их создании. Он не имеет возвращаемого значения (при этом нельзя указывать void!) , он имеет такое же имя как у класса. Конструкторов может быть несколько. Реализация в .срр.

Конструкторов может быть несколько, их можно перегружать (стр 298)

Деструктор - метод класса, предназначенный для освобождения памяти при уничтожении объекта. Имеет то же имя, что и класс, нет параметров ни вводных ни возвращаемых значений. Деструктор может быть только 1, перед именем пишется волна.

Метод const является константным методом, он не может изменять состояние объекта.

Встраиваемые функции (inline functions) ( стр 283)

Встраиваемой (подставляемой) функцией называется та функция, код которой подставляется в строку программы из которой она вызывается, те вызов функции заменяется её кодом. Использование встраиваемых функций оправдываются, когда они короткие, иначе следует использовать обыкновенные функции.

Два способа создания встраиваемой функции:

  1. с помощью модификатора inline

  2. определение кода для функции-члена в самом объявлении класса. Любая функция, которая определяется в объявлении класса автоматически является встраиваемой.

Параграф 3 - дружественные функции (файл op2) (стр 294)

Дружественность может быть от классов и от функций.

рассмотрим только от функций

В С++ имеется возможность разрешить доступ к закрытым членам класса функциям, не являющимися членами этого класса.

Дружественные функции - не являются методами класса, при этом имеют доступ к private части, могут обращаться к данным и методам к private части класса.

Объявление :

Public:

friend type name_function (data);

Функция может быть дружественной сразу к нескольким классам.

Методы класса

Вне класса

Друзья

Private

+

-

+

Pablic

+

+

+

программа демонстрирует дружественные функции, изменяет значение объекта

#include <iostream>

using namespace std;

class A

{

int x; public:

A () {x=0;};

void print () {cout <<”x=”<< x <<endl;}

friend void set_x (A &,int); // это дружественная функция! int - значение на которое изменим х

};

void set_x (A & object, int n)

{ object.x =n; }

int main ()

{

A obj;

obj.print();

set_x(obj,10);

obj.print();

system (“pause”);

return 0;

}}

ПАРАГРАФ 4 - указатель this – норма

любой метод класса знает адрес того объекта, для которого он вызывается посредством указателя this.

Ключевое слово this - это указатель на объект, который вызывает функцию-член.

this - адрес объекта

*this - сам объект

Можем использовать внутри метода, для которого вызвана функция, возвращает сам объект. Важно то, что только функции – члены имеют указатель this, функции-«друзья» не имеют его, так как не являются членами класса.

когда мы распечатываем компилятор вместо строки

cout <<"x="<<x<<endl;

видит эту строку:

cout<<"this->x"<< this->x<<endl;

и то же самое:

cout << "(*this).x="<<(*this).x<<endl;

cout << "this="<< this<< endl; - попытка вывести сам адрес объекта.

Выводим адрес у двумя способами:

cout<< "&y="<<&y<<endl;

cout<<"&y=" << &(this->y)<<endl;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]