12.07.2015 Views

C++ - VideoTutorials-bg.com

C++ - VideoTutorials-bg.com

C++ - VideoTutorials-bg.com

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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

: 0class der: d: 5 b: 0b: 017.5.2 Преобразуване в посока “основен производен”Тъй като основният клас не съдържа собствените компоненти напроизводния клас, това преобразуване се осъществява само чрез явноуказване.Най-често се срещат следните случаи:а) Присвояване и инициализиране на обект от производен клас собект на основен класНека x е обект на класа base, а y е обект на производния му класder. Искаме на y да присвоим x. Стандартно се реализира чрез явнопреобразуване на x в обект на клас der, т.е.base x;der y = (der)x;Операцията е опасна, тъй като собствените компоненти на обекта y щеостанат неинициализирани и опитът за промяната им може да доведе досериозни последици. Затова някои реализации на езика, в това число иVisual <strong>C++</strong> 6.0, не реализират това преобразувание.Подобна е ситуацията при използване на указатели към обекти:base *pb = new base;der* pd = (der*) pb;Извършва се явно преобразуване на pb в указател към обект на класder. Указателят pd към обект на der не сочи към истински обект отклас der. Областта в паметта, свързана с указателя pd, няма собственикомпоненти на класа der. Опитът за използването им може да предизвикасериозни проблеми, тъй като ще се използва памет, която е определеназа други цели. Някои реализации на езика не реализират товапреобразуване. Visual <strong>C++</strong> 6.0 го извършва. От примера по-долу севижда, че се извежда случайна стойност, но опитът за промяна на тазипамет, може да е с непредвидими за програмата последици. Дефиниция на66

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

Saved successfully!

Ooh no, something went wrong!