Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Не підтверджено.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.08 Mб
Скачать

Int а, ь; public:

myClassO {а = b = 0;}

void Set(int c, int d) {a = c; b = d;}

void ShowO {cout«"a =" « a «b =" « b « endl;}

};

Int mainO

{

myClass ObjA, ObjB; // Створення об'єктів класу

ObjA.Set(10, 20);

ObjB.Set(0, 0);

cout«"Об'єкт ObjA до присвоєння:" « endl;

ObjA.ShowO;

cout«"Об'єкт ObjB до присвоєння:" « endl;

ObjB.ShowO; cout« endl;

ObjB = ObjA; // Присвоюємо об'єкт ObjA об'єкту ObjB.

cout«"Об'єкт ObjA після виконання операції присвоєння:" « endl;

ObjA.ShowO;

cout«"Об'єкт ObjB після виконання операції присвоєння:" « endl;

ObjB.ShowO;

getchO; return 0;

}

Внаслідок виконання ця програма відображає на екрані такі результати:

Об'єкт ObjA до присвоєння: а = 10; b = 20

Об'єкт ObjB до присвоєння:

а = 0; Ь = 0

Об'єкт ОЬІА після виконання операції присвоєння: а = 10; Ь = 20

Об'єкт ОЬІВ після виконання операції присвоєння: а = 10; Ь = 20

За замовчуванням усі значення членів-даннх з одного об'єкта присвоюються іншому шляхом створення порозрядної копії1. Але, як буде показано далі, опера­тор присвоєння можна перевизначати, визначивши власні операції присвоєння.

Нео! хідноапам ятати! Присвоєння одного об'єкта іншому просто робить значення їх членів-даних однаковими, але ці два об'єкти залишаються абсо­лютно незалежними. Отже, подальше модифікування даних одного об'єкта не робить ніякого впливу на дані іншого.

  1. Особливості механізму передачі об'єктів функціям

Об'єкт можна передати функції так само, як і змінну будь-якого іншого типу даних. Об'єкти передаються функціям шляхом використання звичайного С++-по- годження про передачу параметрів за значенням. Згідно з цим погодженням, фун­кції передається не сам об'єкт, а його копія. Це означає, що зміни, внесені в об'єкт - копію у процесі виконання функції, не роблять ніякого впливу на вхідний об'єкт, який використовується як аргумент для функції. Цей механізм продемонстровано у наведеному нижче коді програми.

Код програми 3.7. Демонстрація механізму передачі об'єктів функціям #іпсІис)е <УСІ>

// Для потокового введення-виведення // Для консольного режиму роботи // Використання стандартного простору імен

// Оголошення класового типу

{с = 0;}

{с = _с;}

{cout« s « с « endl;}

// Визначення функції не члена класу

// Виведення числа 10.

// Встановлює тільки локальну копію. // Виведення числа 100.

#include <iostream> #include <conio> using namespace std;

class myClass { int c; public:

myClass() void Set(int _c) void Show(char *s)

};

Void Fun(myClassobj)

{

obj.Show("t2="); obj.Set(100); obj.Show("t3=");

Int mainO

{

myClass Obj;

Obj.Set(IO); Obj.Show("t1=");

Fun(Obj);

Obj.Show("t4=");

getchO; return 0;

// Створення об'єкта класу

// Виведення числа 10.

// Передача об'єкта функції не члена класу

// Як і раніше, виводиться число 10, проте // значення змінної "і" не змінилося.

}

Ось ж виглядають результати виконання цієї програми.

П= 10

12=10

0=100

14=10

Як підтверджують ці результати, модифікування об'єкта оЬІ у функції РипО не впливає на об'єкт ОЬІ у функції таіп().