Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Перевантаження операцій в С + +

Реферат Перевантаження операцій в С + +





an>

void print () {<<"Це компонент базового класу ="

<

<

}


Виклики virtual print () використовують пізніше зв'язування.

Віртуальна функція не може бути оголошена як static (статична). При відсутності об'єкта Turbo C + + не може виконати пізніше зв'язування.

Оголошення віртуальної функції-методу автоматично робить віртуальними всі функції з цим ім'ям в підкласах.

Якщо метод в підкласі з тим же ім'ям приймає інші аргументи, то ніякого поліморфізму немає. Розглянемо приклад:


# include Base {void print () {<<"Це об'єкт базового класу"

<

}

}; SubClass: public Base {void print (char * c) {<<"Це об'єкт підкласу"

<

<

}

}; fn (Base & obj) {. print ();. print ("Relative object");// помилка компілятора # 1

} main () {aSubClass;. print ();// помилка компілятора # 2.print ("aSubClass"); (aSubClass);

}


Обидва класи, Base і SubClass, містять функції print (); однак, ці дві функції мають різні аргументи. Компілятор C + + не дозволить зробити виклик Base :: print () з невірними типами аргументів, що призведе до помилки, з відповідним повідомленням від компілятора. Аналогічна ситуація виникне і в другому випадку, коли компілятор зустріне виклик SubClass :: print (). br/>

5. Правило isA ()


Якщо способи обробки об'єкта підкласу відрізняються від способів обробки об'єктів базового класу, то кращим є спосіб перевантаження методу об'єкта базового класу з новим визначенням. Це може в деяких випадках виявитися незручним, особливо якщо функція була реалізована як некомпонентная. У таких випадках для функції необхідно знати тип об'єкта, з яким вона має справу.

Для вирішення цієї проблеми програміст повинен визначити метод ідентифікації, зазвичай званий isA (). Це віртуальне правило повертає константу, яка є унікальною для кожного типу підкласу. Можна перекласти слово isA як є (під) класом певного типу . Розглянемо наступну некомпонентную версію функції print ().


# include Base {ClassType {BASE, SUBCLASS}; ClassType isA () {return BASE;}

} print (Base & obj) {(obj.isA () == Base :: BASE) <<"Це об'єкт базового класу n"; (obj.isA () = = Base :: SUBCLASS) <<"Це об'єкт підкласу n"; <<"Це невід...


Назад | сторінка 5 з 6 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Комплексна механізація перевантаження листової сталі в пакетах
  • Реферат на тему: Оптимізація механізованої лінії перевантаження лісу в пакетах
  • Реферат на тему: Вибір оптимальної схеми механізації для перевантаження заданого вантажу
  • Реферат на тему: Вантажні тарифи і договірні ставки плат за перевантаження вантажів у портах
  • Реферат на тему: Вантажні тарифи і договірні ставки плат за перевантаження вантажів у портах