Как C ++ реализует внутреннее динамическое связывание? - PullRequest
0 голосов
/ 31 января 2010

Уважаемый сэр!


пожалуйста, объясните, как c ++ реализует эту динамическую привязку, графическое представление было бы более полезным для понимания перспективы.
или предложить websigt, который содержит графические представления и полную информацию по этой теме.

1 Ответ

1 голос
/ 21 мая 2010

позвольте мне вставить текст для вас, любой голос приветствуется: O

[20.2] Как в C ++ можно добиться динамического связывания и статической типизации?

Когда у вас есть указатель на объект, объект может фактически принадлежать к классу, производному от класса указателя (например, Vehicle *, который фактически указывает на объект Car; это называется «полиморфизм») ). Таким образом, существует два типа: (статический) тип указателя (в данном случае - «Автомобиль») и (динамический) тип указываемого объекта (в данном случае - «Автомобиль»).

Статическая типизация означает, что законность вызова функции-члена проверяется как можно раньше: компилятором во время компиляции. Компилятор использует статический тип указателя, чтобы определить, допустим ли вызов функции-члена. Если тип указателя может обрабатывать функцию-член, безусловно, объект, на который указывает указатель, также может обрабатывать его. Например, если автомобиль имеет определенную функцию-член, то, конечно, автомобиль также имеет эту функцию, поскольку автомобиль является своего рода транспортным средством.

Динамическое связывание означает, что адрес кода в вызове функции-члена определяется в последний возможный момент: на основе динамического типа объекта во время выполнения. Это называется «динамическое связывание», потому что связывание с кодом, который фактически вызывается, выполняется динамически (во время выполнения). Динамическое связывание является результатом виртуальных функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...