Недавно я ответил на еще один вопрос, задающий вопросы, на которые должен отвечать любой достойный программист на С++. Мое предложение было
Q: How does a pointer point to an object?
A: The pointer stores the address of that object.
но пользователь R.. не согласен с A, я предлагаю Q - он говорит, что правильным ответом будет "он специфичен для реализации". В то время как современные реализации хранят числовые адреса в качестве указателей, нет причин, по которым он не может быть более сложным.
Определенно, я не могу не согласиться с тем, что могут быть другие реализации, кроме хранения адреса только ради несогласия. Мне действительно интересно, что есть другие реально используемые реализации.
Каковы другие фактически используемые реализации указателей в С++, кроме сохранения адреса в переменной целочисленного типа? Как реализовано литье (особенно dynamic_cast
)?