Бьерн Страуструп.
Язык программирования С++
349
};
В разделе $$4.7 было сказано, что появление макроопределений служит сигналом возникших проблем.
Здесь проблема в том, что только транслятор имеет непосредственный доступ к литеральным типам, а
макроопределения скрывают специфику реализации. По сути для хранения информации для
динамических запросов о типах предназначена таблица виртуальных функций. Если реализация
непосредственно поддерживает динамическую идентификацию типа, то рассматриваемые операции
можно реализовать более естественно, эффективно и элегантно. В частности, очень просто
реализовать функцию ptr_cast(), которая преобразует указатель на виртуальный базовый класс в
указатель на его производные классы.
Достарыңызбен бөлісу: