12.07.2015 Views

C++ - VideoTutorials-bg.com

C++ - VideoTutorials-bg.com

C++ - VideoTutorials-bg.com

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

е неправилна заради двойното освобождаване на динамична памет. Някоидефиниции са пропуснати, тъй като са същите като в задача 160.17.4.2 Конструктор за присвояване и операторна функция за присвояванеЧлен-данните на обект на производен клас могат да получатстойности и чрез инициализиране чрез присвояване на друг обект илинаправо чрез присвояване. Това се осъществява чрез конструктора заприсвояване и операторната функция за присвояване на производнияклас.В общия случай, производният клас не наследява от основния класконструктора за присвояване и оператора за присвояване. Има някоиизключения, на които ще се спрем по-долу.Конструктор за присвояванеПри конструкторите за присвояване се спазва същият принцип катопри обикновените конструктори на производния и основния клас.Конструкторът за присвояване на производния клас инициализира чрезприсвояване собствените член-данни на класа, а конструкторът заприсвояване на основния клас инициализира наследените член-данни.Конструкторите за присвояване на производни класове се дефинират посъщия начин като обикновените конструктори на производни класове. Щенапомним, че ако в клас не е дефиниран конструктор за присвояване,ролята на такъв се поема от генерирания системен конструктор закопиране (const &).Ще отбележим някои случаи на използване на конструкторите заприсвояване на производния и основния клас.· В производния клас не е дефиниран конструктор за присвояванеВъзможни са:а) в основния клас е дефиниран конструктор за присвояванеВ този случай компилаторът генерира служебен конструктор закопиране на производния клас (const &), който преди да се изпълни, активира и изпълняваконструктора за присвояване на основния клас. Ще отбележим, че при44

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!