Здравствуйте, c-smile, Вы писали:
CS>Я бы, коллега, ужесточил ваше определение: полиморфный класс это собственно любой абстрактный класс.
Позволю себе, коллега, с вами не согласиться — ИМХО ваше ужесточение определения слишком жесткое
А то выходит, что если класс содержит виртуальные методы, но среди них нет "чистых", то это уже не полиморфный класс.
Здравствуйте, Bell, Вы писали:
B>Здравствуйте, c-smile, Вы писали:
CS>>Я бы, коллега, ужесточил ваше определение: полиморфный класс это собственно любой абстрактный класс.
B>Позволю себе, коллега, с вами не согласиться — ИМХО ваше ужесточение определения слишком жесткое B>А то выходит, что если класс содержит виртуальные методы, но среди них нет "чистых", то это уже не полиморфный класс.
Коллега! Позволю вам напомнить что не каждый класс содержащий виртуальные методы — полиморф.
Например некто может обявить методы виртуальными "за для" создания vtbl.
Полиморф это всегда суперкласс в иерархии. Просто класс с виртуальными методами не есть в самом общем случае это самое
Скажем так, для того что бы класс был полиморфным необходимо чтобы он имел виртуальные методы и достаточно чтобы он был абстрактным. Как вам такое определение, коллега?
А если зреть в суть то самый затрапезный union { unt i; char c } самый полиморфный полиморф с точки зрения банальной эрудиции.
Здравствуйте, Шахтер, Вы писали:
Ш>Здравствуйте, INsideR, Вы писали:
INR>>Чем отличается полиморфный тип от неполиморфного?
Ш>Наличием хотя бы одного виртуального метода.
Я бы, коллега, ужесточил ваше определение: полиморфный класс это собственно любой абстрактный класс.
Здравствуйте, INsideR, Вы писали:
INR>Чем отличается полиморфный тип от неполиморфного?
Смотря какой полиморфизм
Если статический шаблонный, то фактически любой тип,
реализующий определённые методы.
Если про "более классический" полиморфизм,
то для языка C++ наличие в классе виртуального
метода с большой степенью вероятности позволяет
говорить что класс полиморфный.
Здравствуйте, c-smile, Вы писали:
CS>Скажем так, для того что бы класс был полиморфным необходимо чтобы он имел виртуальные методы и достаточно чтобы он был абстрактным. Как вам такое определение, коллега?
В целом неплохо , но я все-таки попробую развить мысль чуть дальше:
для того что бы класс был полиморфным, необходимо чтобы он имел виртуальные методы, и чтобы он принадлежал некой иерархии (наследования).
Вот.
CS>А если зреть в суть то самый затрапезный union { unt i; char c } самый полиморфный полиморф с точки зрения банальной эрудиции.
Нее, с таким union-ом нельзя работать "полиморфно", т.е.
union u{ unt i; char c };
u uu;
uu.c = '1';
int n = uu.i;