Программирование >>  Дополнительные возможности наследования 

1 ... 232 233 234 [ 235 ] 236 237 238 ... 265


Вопросы п ответы

в комментарии, содержащемся в строках 659, говорится, что С++ не поддерживает контравариантность. Что такое контравариантность?

Контравариантностью называется возможность создания указателя базового класса на указатель производного класс.

предупреждение

ВНИМАНИЕ: Этот листинг не будет скомпилирован!

Аисшапг 3.2. Пример контравариатлности

#include<iostream.h>

class Animal

public:

virtual void Speak() { cout Animal Speaks\ n ; }

class Dog : public Animal {

public:

void SpeakO { cout Dog Speaks\ n ; }

class Cat : public Animal {

public:

void SpeakO { cout Cat Speaks\ n ; }

void DoIt(Cat ); void DoIt(Dog );

int mainO {

Animal * pA = new Dog;

DoIt(pA);

return 0;

void DoIt(Cat * c) {

cout They passed a cat!\ n endl;



c->Speak();

void DoIt(Dog * d) {

cout They passed a dog!\ n endl; d->Speak();

Ho в С++ эту проблему можно решить с помощью виртуальной функции.

#include<iostream,h>

class Animal {

public;

virtual void Speak() { cout Animal Speaks\ n ; } } ;

class Dog ; public Animal {

public;

void SpeakO { cout Dog Speaks\ n ; }

class Cat ; public Animal {

public;

void SpeakO { cout Cat Speaks\ n ; }

void DoIt(Animal*);

int mainO {

Animal pA = new Dog;

DoIt(pA);

return 0;

void DoIt(Animal * c) {

cout They passed some kind of

animal\ n << endl; c->Speak();



sAms

Левой самостоятельно

Пришиае fl

Приоритеты операторов

Важно понять, что операторы имеют приоритеты, но запоминать их совсем не обязательно.

Приоритет оператора определяет последовательность, в которой профамма выполняет операторы в выражении или формуле. Если один оператор имеет приоритет над другим оператором, то он выполняется первым.

Приоритет оператора убывает с увеличением номера категории. Все операторы одной категории имеют равный приоритет. Унарные операторы (категория 3), условный оператор (категория 14) и операторы присваивания (категория 15) ассоциируются справа налево, все остальные - слева направо. В приведенной ниже таблице операторы перечислены по категориям в порядке убывания их приоритетности.

Прирришоты онерапюрар

Квтвйврия

1 (наивысшего приоритета)

Ивзвваав или двВствив

Разрешение области видимости, индексирования ;: [ ]

3 (унарные)

(мультипликативные)

5 (аддитивные)

6 (сдвига)

Прямое и косвенное обращение к члену класса Вызов функции

Постфиксные инкремент и декремент Префиксные инкремент и декремент Размер

Дополнение до единицы и логическое отрицание Унарные минус и плюс Получение адреса и разыменование Создание и удаление динамического объекта

Приведение типа

Умножение, деление, деление по модулю

Бинарный плюс, бинарный минус Вывода и ввода

. ->

sizeof, sizeofО

new, new[.

delete,

delete[]

casting

. / %



1 ... 232 233 234 [ 235 ] 236 237 238 ... 265

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика