Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование).docx
Скачиваний:
32
Добавлен:
28.10.2018
Размер:
52.68 Кб
Скачать

24) Конструктор копии . Операция присваивания.-

Конструктор копий вызывается всякий раз , когда представитель класса при создании инициализируется при помощи уже существующего представителя этого класса . Если конструктор копий не предусмотрен , то будет сгенерирован конструктор копий по умолчанию , который

создаст новую точную копию .

Class proverka {int a,b;

Public : proverka (int aa,int bb):a(aa);b(bb){}

Proverka (const proverka &sonya)

{a=sonya.a;

B=sonya.b+6666;}

};

Void main(){

Proverka sasha (25;25);

Proverka elkin=sasha;}

Операция присваивания является функцией элемента с именем operator= , которая принимает в качестве параметра ссылку или константную ссылку на представитель класса . Операция присваивания вызывается компилятором , когда уже существующему представителю класса присваивается в качестве значения еще существующий представитель класса . Если операция присваивания не создана , то присваивание осуществляет копирование .

25) Преобразование объектов класса в другие типы и их получение из других типов .

Объект класса можно преобразовывать в другие типы с помощью операций приведений типа :

A=(float)t/5;

В классе можно определять элементы функций , которые будут обеспечены явным преобразованием типа данного класса в другие типы . Заголовок имеет вид : operator имя_типа ().

Процедура преобразования не может иметь параметр и для нее нет необходимости определять тип возвращаемого значения .

26)Перегрузка операций .

Язык Си++ позволяет переопределять для классов существующие обозначения операций . В Результате для классов можно использовать операции привычные для базовых типов . Обычно программисты стараются перегружать таким образом , чтобы смысл знаков операций не менялся .

Функции операций , реализующие перегрузку операций имеют вид :

тип возвращаемого значения_operator_знак операции (операнды).

Если функция является элементом класса , то первый операнд соответствующей операции будет самим объектом для которого вызвана функция операции . В случае унарной операции список параметров будет пуст , для бинарной имеет 1 параметр , соответствующий второму операнду .

Если функция операции не является элементом класса , она будет иметь 1 параметр в случае унарной , и 2 в случае бинарной . Тернарная не может быть перегружена . Приоритет и правило вычисления остается для перегруженных таким же , что и для операций над встроенными типами . Поведение операции по отношению к встроенному типу изменить нельзя . Если функция операция не является членом класса , то хотя бы 1 из ее параметров должен быть типом класса . Аргументов по умолчанию функция операция иметь не может .

Class proverka {int a,b;

Public:proverka (i(nt aa,int bb):a(aa);b(bb));{}

Proverka operator + (const proverka &);

};

Proverka proverka::operator +(const proverka &zaval)

{proverka marazm(0,0);

Marazm.a=a+zaval.a;

Marazm.b=b+zaval.b;

Return marazm;

}

Void main ()

{proverka q(10,10);

Proverka w(6,6);

Proverka summa(0,0);

Summa=q+w;

}