Вільна Пам'ять h2>
Якщо ви користувалися класом slist, ви могли виявити,
що ваша програма витрачає на помітне час на розміщення та звільнення
об'єктів класу slink. Клас slink - це чудовий приклад класу, який
може значно виграти від того, що програміст візьме під контроль
управління вільною пам'яттю. Для цього виду об'єктів ідеально підходить
оптимізуючий метод. Оскільки кожен slink створюється за допомогою new і
знищується за допомогою delete членами класу slist, інший спосіб виділення
пам'яті не представляє ніяких проблем. p>
Якщо похідний клас здійснює присвоювання
вказівником this, то конструктор його базового класу буде викликатися тільки
після цього привласнення, і значення вказівника this в конструкторі базового
класу буде тим, яке присвоєно конструктором похідного класу. Якщо
базовий клас присвоює вказівником this, то буде присвоєно те значення,
яке використовує конструктор похідного класу. p>
Наприклад:
p>
# include p>
struct base (base ();); p>
struct derived: base (derived ();) p>
base:: base () p>
( p>
cout <<
"tbase 1: this =" <
if (this == 0)
this = (base *) 27; p>
cout <<
"tbase 2: this =" <
) p>
derived:: derived () p>
( p>
cout <<
"tderived 1: this =" <
this = (this
== 0)? (derived *) 43: this; p>
cout <<
"tderived 2: this =" <
) p>
main () p>
( p>
cout << "base b; n"; p>
base b; p>
cout << "new base b; n"; p>
new base; p>
cout << "derived d; n"; p>
derived d; p>
cout << "new derived d; n"; p>
new derived; p>
cout << "at the endn"; p>
) p>
породжує висновок p>
base b; p>
base 1:
this = 2147478307 p>
base 2:
this = 2147478307 p>
new base; p>
base 1:
this = 0 p>
base 2:
this = 27 p>
derived d; p>
derived 1:
this = 2147478306 p>
base 1:
this = 2147478306 p>
base 2:
this = 2147478306 p>
derived 1:
this = 2147478306 p>
new derived; p>
derived 1:
this = 0 p>
base 1:
this = 43 p>
base 2:
this = 43 p>
derived 1: this = 43 p>
at the end p>
Якщо деструктор похідного класу здійснює присвоювання
вказівником this, то буде присвоєно те значення, яке зустрів деструктор його
базового класу. Коли хто-небудь робить в конструкторі присвоювання вказівником
this, важливо, щоб присвоювання вказівником this зустрічалося на всіх дорогах в
конструкторі. p>
Список літератури h2>
Для підготовки даної роботи були використані матеріали
з сайту http://www.realcoding.net
p>