🗊 Презентация Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2)

Нажмите для полного просмотра!
Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №1 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №2 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №3 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №4 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №5 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №6 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №7 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №8 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №9 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №10 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №11 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №12 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №13 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №14 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №15 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №16 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №17 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №18 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №19 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №20 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №21 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №22 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №23 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №24 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №25 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №26 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №27 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №28 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №29 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №30 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №31 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №32 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №33 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №34 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №35 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №36 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №37 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №38 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №39 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №40 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №41 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №42 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №43 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №44 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №45 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №46 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №47 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №48 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №49 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №50 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №51 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №52 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №53 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №54 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №55 Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2), слайд №56

Содержание

Вы можете ознакомиться и скачать презентацию на тему Об'єктне програмування. Копіювання об'єктів. (Частина 1. Лекція 2). Доклад-сообщение содержит 56 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Бублик Володимир Васильович Об'єктно-орієнтоване програмування Частина 1. Об'єктне програмування. Лекція 2. Копіювання об'єктів Лекції для студентів...
Описание слайда:
Бублик Володимир Васильович Об'єктно-орієнтоване програмування Частина 1. Об'єктне програмування. Лекція 2. Копіювання об'єктів Лекції для студентів 2 курсу

Слайд 2


Повторення Що має бути в класі class T { private: // Тут розміщують атрибути public: // Конструктори T(T1,…,Tn); // Деструктор ~T(); // далі...
Описание слайда:
Повторення Що має бути в класі class T { private: // Тут розміщують атрибути public: // Конструктори T(T1,…,Tn); // Деструктор ~T(); // далі селектори, модифікатори, … };

Слайд 3


Приклад класу. String class String { private: size_t _len; char* _allocator; public: String(); String(const char*); String(const char); ~String();...
Описание слайда:
Приклад класу. String class String { private: size_t _len; char* _allocator; public: String(); String(const char*); String(const char); ~String(); size_t length() const {return _len;} bool empty() const {return _len==0;} void clear() {*this=String();} };

Слайд 4


Констуктори Для чого у класі три різних конструктори? class String { private: size_t _len; char* _allocator; public: String(); String(const char*);...
Описание слайда:
Констуктори Для чого у класі три різних конструктори? class String { private: size_t _len; char* _allocator; public: String(); String(const char*); String(const char); …………………………………………… };

Слайд 5


Властивість інкапсуляції Відокремлення реалізації класу від його визначення String::String (const char c): _allocator( new char [2]), _len(1) {...
Описание слайда:
Властивість інкапсуляції Відокремлення реалізації класу від його визначення String::String (const char c): _allocator( new char [2]), _len(1) { _allocator [0]=c; _allocator [1]='\0'; return; }

Слайд 6


Питання Чому у визначенні класу розміщені реалізації? class String { private: size_t _len; char* _allocator; public:………………………………………….. size_t...
Описание слайда:
Питання Чому у визначенні класу розміщені реалізації? class String { private: size_t _len; char* _allocator; public:………………………………………….. size_t length() const {return _len;} bool empty() const {return _len==0;} void clear() {*this=String();} };

Слайд 7


Питання Чи коректний параметр замовчування? ― Ні. Чому? class String { private: size_t _len; char* _allocator; public: String (); String (const char*...
Описание слайда:
Питання Чи коректний параметр замовчування? ― Ні. Чому? class String { private: size_t _len; char* _allocator; public: String (); String (const char* ps=0); String (const char); ~String (); };

Слайд 8


Конструктор копіювання class T { T(T1,…,Tn); ~T(); // конструктор копіювання // створює новий об'єкт, ідентичний // переданому параметром T(const...
Описание слайда:
Конструктор копіювання class T { T(T1,…,Tn); ~T(); // конструктор копіювання // створює новий об'єкт, ідентичний // переданому параметром T(const T&); // Можливий варіант: T(T&); // але не Т(Т) };

Слайд 9


Використання Конструктор копіювання викликається кожного разу, коли параметр або результат передаються значеннями T1 f(T2 x) { T1 y; // тіло f…...
Описание слайда:
Використання Конструктор копіювання викликається кожного разу, коли параметр або результат передаються значеннями T1 f(T2 x) { T1 y; // тіло f… return y; } a=f(b); // T2 x(b); T1 y; тіло f… ; a = T1(y);

Слайд 10


Облік об'єктів (Off top) "Тьоркін на тім світі…“ Олександр Твардовський – Як це так – без виробництва? – Теркін знову пристає, – І щоб тільки...
Описание слайда:
Облік об'єктів (Off top) "Тьоркін на тім світі…“ Олександр Твардовський – Як це так – без виробництва? – Теркін знову пристає, – І щоб тільки керівництво!.. – Ні, ще облік у нас є... Переклад Марка Кайдаша

Слайд 11


Інвентаризація об'єктів class Point { static int _freeID; const int _pointID; double _x; double _y; public: Point (double x=0, double y=0); Point...
Описание слайда:
Інвентаризація об'єктів class Point { static int _freeID; const int _pointID; double _x; double _y; public: Point (double x=0, double y=0); Point (const Point &); ~Point(); };

Слайд 12


Конструктор Point Point::Point (double x, double y): _x (x), _y (y), pointID (++_freeID) { #ifdef NDEBUG cout
Описание слайда:
Конструктор Point Point::Point (double x, double y): _x (x), _y (y), pointID (++_freeID) { #ifdef NDEBUG cout

Слайд 13


Копіювальний конструктор Point Point::Point (const Point & u): _x (u._x), _y (u._y), pointID(++_freeID) { #ifdef NDEBUG cout
Описание слайда:
Копіювальний конструктор Point Point::Point (const Point & u): _x (u._x), _y (u._y), pointID(++_freeID) { #ifdef NDEBUG cout

Слайд 14


Замовчування у копіювальному конструкторі class Foo; int main() { Foo f1(10); // Створення нового об'єкту Foo f2(f1); // Копіювання існуючого об'єкту...
Описание слайда:
Замовчування у копіювальному конструкторі class Foo; int main() { Foo f1(10); // Створення нового об'єкту Foo f2(f1); // Копіювання існуючого об'єкту Foo f3; // Це що? Наперед невідомо }

Слайд 15


Перший варіант class Foo { private: int _k; static int _freeid; const int _id; public: Foo(int k=0):_k(k), _id(++_freeid){ cout
Описание слайда:
Перший варіант class Foo { private: int _k; static int _freeid; const int _id; public: Foo(int k=0):_k(k), _id(++_freeid){ cout

Слайд 16


Другий варіант class Foo { private: int _k; static int _freeid; const int _id; static Foo _static_foo; public: Foo(int k=0):_k(k), _id(++_freeid){...
Описание слайда:
Другий варіант class Foo { private: int _k; static int _freeid; const int _id; static Foo _static_foo; public: Foo(int k=0):_k(k), _id(++_freeid){ cout

Слайд 17


Експеримент int Foo::_freeid = 0; Foo Foo::_static_foo(100); int main() { cout
Описание слайда:
Експеримент int Foo::_freeid = 0; Foo Foo::_static_foo(100); int main() { cout

Слайд 18


Інший експеримент int Foo::_freeid = 0; int main() { cout
Описание слайда:
Інший експеримент int Foo::_freeid = 0; int main() { cout

Слайд 19


Деструктор Point Point::~Point() { #ifdef NDEBUG cout
Описание слайда:
Деструктор Point Point::~Point() { #ifdef NDEBUG cout

Слайд 20


Передача об'єктів параметрами Значенням Point operator+ (Point u, Point v) { Point res(u.x()+v.x(), u.y()+v.y()); return res; } Відсилками ostream&...
Описание слайда:
Передача об'єктів параметрами Значенням Point operator+ (Point u, Point v) { Point res(u.x()+v.x(), u.y()+v.y()); return res; } Відсилками ostream& operator

Слайд 21


Протокол int main() { Point a(1,2); Point b(5); a+b; return 0; }
Описание слайда:
Протокол int main() { Point a(1,2); Point b(5); a+b; return 0; }

Слайд 22


Вправа до передачі об'єктів параметрами Що зміниться в протоколі, якщо у виводі забрати сталу відсилку? ostream& operator
Описание слайда:
Вправа до передачі об'єктів параметрами Що зміниться в протоколі, якщо у виводі забрати сталу відсилку? ostream& operator

Слайд 23


Без локальної змінної Point operator+ (Point u, Point v) { /* Замість Point res(u.x()+v.x(), u.y()+v.y()); return res; */ return Point ( u.x()+v.x(),...
Описание слайда:
Без локальної змінної Point operator+ (Point u, Point v) { /* Замість Point res(u.x()+v.x(), u.y()+v.y()); return res; */ return Point ( u.x()+v.x(), u.y()+v.y() ); }

Слайд 24


Протокол 2 int main() { Point a(1,2); Point b(5); a+b; return 0; }
Описание слайда:
Протокол 2 int main() { Point a(1,2); Point b(5); a+b; return 0; }

Слайд 25


Сталі відсилки Point operator+ (const Point & u, const Point & v) { return Point ( u.x()+v.x(), u.y()+v.y() ); }
Описание слайда:
Сталі відсилки Point operator+ (const Point & u, const Point & v) { return Point ( u.x()+v.x(), u.y()+v.y() ); }

Слайд 26


Протокол 3 int main() { Point a(1,2); Point b(1); a+b; return 0; }
Описание слайда:
Протокол 3 int main() { Point a(1,2); Point b(1); a+b; return 0; }

Слайд 27


Урок передачі параметрів Передаючи параметр і одержуючи результат, усвідомлюйте, з чим маєте справу: з оригіналом чи копією
Описание слайда:
Урок передачі параметрів Передаючи параметр і одержуючи результат, усвідомлюйте, з чим маєте справу: з оригіналом чи копією

Слайд 28


Копіювання агрегатів class WrappedVector { private: static const size_t n; double * v; public: WrappedVector(); WrappedVector(const WrappedVector&);...
Описание слайда:
Копіювання агрегатів class WrappedVector { private: static const size_t n; double * v; public: WrappedVector(); WrappedVector(const WrappedVector&); ~WrappedVector(); };

Слайд 29


Копіювальний конструктор вектора WrappedVector:: WrappedVector (const WrappedVector& vec): _v (new double[_n]) { for (size_t i=0; i
Описание слайда:
Копіювальний конструктор вектора WrappedVector:: WrappedVector (const WrappedVector& vec): _v (new double[_n]) { for (size_t i=0; i

Слайд 30


Копіювальний конструктор за замовчуванням WrappedVector:: WrappedVector (const WrappedVector& vec): _v (vec._v) { }; // Чим закінчиться виконання...
Описание слайда:
Копіювальний конструктор за замовчуванням WrappedVector:: WrappedVector (const WrappedVector& vec): _v (vec._v) { }; // Чим закінчиться виконання програми? int main() { WrappedVector u, v(u); return 64; // катастрофою!!! }

Слайд 31


Копіювання присвоєнням class WrappedVector { private: static const size_t n; double * v; public: WrappedVector(); WrappedVector(const...
Описание слайда:
Копіювання присвоєнням class WrappedVector { private: static const size_t n; double * v; public: WrappedVector(); WrappedVector(const WrappedVector&); ~WrappedVector(); WrappedVector& operator= (const WrappedVector&); };

Слайд 32


Реалізація копіювального присвоєння WrappedVector& WrappedVector::operator= (const WrappedVector& vec) { //Нам поталанило: vec і this мають одну й ту...
Описание слайда:
Реалізація копіювального присвоєння WrappedVector& WrappedVector::operator= (const WrappedVector& vec) { //Нам поталанило: vec і this мають одну й ту ж довжину for (size_t i=0; i

Слайд 33


Присвоєння за замовчуванням WrappedVector& WrappedVector :: operator= (const WrappedVector& vec) { v = vec; return *this; } // Чим закінчиться...
Описание слайда:
Присвоєння за замовчуванням WrappedVector& WrappedVector :: operator= (const WrappedVector& vec) { v = vec; return *this; } // Чим закінчиться виконання програми? int main() { WrappedVector u, v; u=v; return 64; // знову катастрофою!!! }

Слайд 34


Вектори різної довжини class DissimilarVector { private: size_t _n; //non static, non const(?) double * _v; public: DissimilarVector(int);...
Описание слайда:
Вектори різної довжини class DissimilarVector { private: size_t _n; //non static, non const(?) double * _v; public: DissimilarVector(int); DissimilarVector(const DissimilarVector&); ~DissimilarVector(); DissimilarVector& operator=(const DissimilarVector&); };

Слайд 35


Конструктор вектора DissimilarVector:: DissimilarVector (size_t len) : _n (len), _v (new double[n]) { for (size_t i=0; i
Описание слайда:
Конструктор вектора DissimilarVector:: DissimilarVector (size_t len) : _n (len), _v (new double[n]) { for (size_t i=0; i

Слайд 36


Копіювальний конструктор DissimilarVector:: DissimilarVector (const DissimilarVector& vec): _n (vec._n), _v (new double[vec._n]) { for (size_t i=0; i
Описание слайда:
Копіювальний конструктор DissimilarVector:: DissimilarVector (const DissimilarVector& vec): _n (vec._n), _v (new double[vec._n]) { for (size_t i=0; i

Слайд 37


Чому атрибут _n не може бути сталим? Спробуйте присвоєння за замовчуванням Навіть копіювальне присвоєння, взагалі кажучи, не працюватиме
Описание слайда:
Чому атрибут _n не може бути сталим? Спробуйте присвоєння за замовчуванням Навіть копіювальне присвоєння, взагалі кажучи, не працюватиме

Слайд 38


Копіювальне присвоєння DissimilarVector& DissimilarVector::operator= (const DissimilarVector& vec) { //1. Видалити старий об'єкт if (this==&vec)...
Описание слайда:
Копіювальне присвоєння DissimilarVector& DissimilarVector::operator= (const DissimilarVector& vec) { //1. Видалити старий об'єкт if (this==&vec) return *this; delete [] _v; //2. Створити новий об'єкт _n = vec._n; _v = new double[_n]; //3. Скопіювати значення for (size_t i=0; i

Слайд 39


Рядки з копіюванням class String { private: size_t _len; char* _allocator; public: String(); String(const char*); String(const char); String (const...
Описание слайда:
Рядки з копіюванням class String { private: size_t _len; char* _allocator; public: String(); String(const char*); String(const char); String (const String & s); ~String(); };

Слайд 40


Копіювальний конструктор рядка String::String(String& s) _len( s._len), _allocator( new char[_len+1]) { strcpy(_allocator, s._allocator); return; };
Описание слайда:
Копіювальний конструктор рядка String::String(String& s) _len( s._len), _allocator( new char[_len+1]) { strcpy(_allocator, s._allocator); return; };

Слайд 41


Редагування оригіналу (без const) class String { private: size_t _len; char* _allocator; int _amountOfCopies; public: String(); String(const char*);...
Описание слайда:
Редагування оригіналу (без const) class String { private: size_t _len; char* _allocator; int _amountOfCopies; public: String(); String(const char*); String(const char); String (String & s); ~String(); };

Слайд 42


Копіювання з редагуванням String::String(String& s) _amountOfCopies (0), _len( s._len), _allocator( new char[_len+1]) { // Кількість копій, зроблених...
Описание слайда:
Копіювання з редагуванням String::String(String& s) _amountOfCopies (0), _len( s._len), _allocator( new char[_len+1]) { // Кількість копій, зроблених з оригіналу // збільшується на одиницю s._amountOfCopies++; strcpy(_allocator, s._allocator); return; };

Слайд 43


Мультиконструктор копіювання class String { public: String(); String(const char*); String(const char); String(const String & s, int multiplayer=1);...
Описание слайда:
Мультиконструктор копіювання class String { public: String(); String(const char*); String(const char); String(const String & s, int multiplayer=1); ~String(); };

Слайд 44


Реалізація мультиконструктора копіювання String:: String(const String & s, int multiplayer): _len (s._len*multiplayer), _allocator (new char...
Описание слайда:
Реалізація мультиконструктора копіювання String:: String(const String & s, int multiplayer): _len (s._len*multiplayer), _allocator (new char [_len+1]) { char * target = _allocator; for (int i=0; i

Слайд 45


Застосування копіювання // Common constructor String s(p); // Copy version of multiplication constructor String ss(s); // Multiplication constructor...
Описание слайда:
Застосування копіювання // Common constructor String s(p); // Copy version of multiplication constructor String ss(s); // Multiplication constructor String s10(s,10);

Слайд 46


Проблема замовчуваного параметру Що станеться, якщо замовчуваний параметр перенести до реалізації? ― Катастофа class String { public: String(const...
Описание слайда:
Проблема замовчуваного параметру Що станеться, якщо замовчуваний параметр перенести до реалізації? ― Катастофа class String { public: String(const String & s, int multiplayer); }; String:: String(const String & s, int multiplayer=1):…{…;} Чому?

Слайд 47


Некоректне копіювання #include “String.h” // Common constructor String s(p); // Default copy constructor String ss(s); // Multiplication constructor...
Описание слайда:
Некоректне копіювання #include “String.h” // Common constructor String s(p); // Default copy constructor String ss(s); // Multiplication constructor String s10(s,10);

Слайд 48


Сигнатури присвоєнь Якій з сигнатур віддати перевагу? void operator=( T&); T operator=( T&); T& operator=( T ); T operator=( T ); T& operator=( T&);
Описание слайда:
Сигнатури присвоєнь Якій з сигнатур віддати перевагу? void operator=( T&); T operator=( T&); T& operator=( T ); T operator=( T ); T& operator=( T&);

Слайд 49


Сигнатури присвоєнь Якій з сигнатур віддати перевагу? void operator=( T&); // Як бути з x=y=z; T operator=( T&); // чим копіювати результат? T&...
Описание слайда:
Сигнатури присвоєнь Якій з сигнатур віддати перевагу? void operator=( T&); // Як бути з x=y=z; T operator=( T&); // чим копіювати результат? T& operator=( T ); // чим копіювати параметр? T operator=( T ); // див 2 і 3 разом T& operator=( T&); // ОК!!!

Слайд 50


Сигнатури присвоєнь Якій з сигнатур віддати перевагу? void operator=( T&); T operator=( T&); T& operator=( T ); T operator=( T ); T& operator=( T&);
Описание слайда:
Сигнатури присвоєнь Якій з сигнатур віддати перевагу? void operator=( T&); T operator=( T&); T& operator=( T ); T operator=( T ); T& operator=( T&);

Слайд 51


Що таке this? class T { public: T(T1,…,Tn); ~T(); T(const T&); T& operator= (const T&); }; this має тип T * const
Описание слайда:
Що таке this? class T { public: T(T1,…,Tn); ~T(); T(const T&); T& operator= (const T&); }; this має тип T * const

Слайд 52


Чому * const? this не можна перемістити на інший об'єкт this = anything; не коректно
Описание слайда:
Чому * const? this не можна перемістити на інший об'єкт this = anything; не коректно

Слайд 53


Повернення значення в присвоєнні Point& Point::operator=(const Point & u) { this ->_x = u._x; *this._y = u._y; return *this; }
Описание слайда:
Повернення значення в присвоєнні Point& Point::operator=(const Point & u) { this ->_x = u._x; *this._y = u._y; return *this; }

Слайд 54


Рядки з присвоєнням class String { public: String(); String(const char*); String(const char); String(const String & s, int multiplayer=1); String&...
Описание слайда:
Рядки з присвоєнням class String { public: String(); String(const char*); String(const char); String(const String & s, int multiplayer=1); String& operator=(const String&); ~String(); };

Слайд 55


Присвоєння рядків String& String::operator=(const String& s) { if (this==&s) return *this; delete [] _allocator; _len = s._len; _allocator = new...
Описание слайда:
Присвоєння рядків String& String::operator=(const String& s) { if (this==&s) return *this; delete [] _allocator; _len = s._len; _allocator = new char[_len+1]; strcpy(_allocator, s._allocator); return *this; }

Слайд 56


Висновки Конструктор копіювання створює новий об'єкт Присвоєння звичайно замінює існуючий об'єкт іншим об'єктом (навіть якщо не доводиться видаляти...
Описание слайда:
Висновки Конструктор копіювання створює новий об'єкт Присвоєння звичайно замінює існуючий об'єкт іншим об'єктом (навіть якщо не доводиться видаляти попередні значення) Присвоєння не можна визначити поза класом Присвоєння в класі T має тип T& (чому?) Присвоєння повертає *this, конструктори не повертають нічого (чому?)



Похожие презентации
Mypresentation.ru
Загрузить презентацию