Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters
Register

Reply
 
LinkBack Thread Tools
Old 23.03.2004, 17:44   #31
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default

Quote:
Originally Posted by Tumanyan
Несовсем. Есть технические, скорее даже, принципиальные ограничения, и вот какие:
В случае вызова без экземпляра класса, функция имеет сигнатуру:

return_type foo(type 1 arg1, type 2, arg2, .....);

При вызове через экземпляр есть 2 нюанса:

1. Вызов функции будет закодирован несколько иначе (обращение к виртуальной таблице. Косвенный вызов)

2. Сигнатура функции:

return_type foo(ClassType* instance_ptr, type1 arg1,.....);

Т.е., даже технически, получаются 2 разные функции (или перегрузка функции, в данном случае это - неважно).
С точки же зрения ООП, не выполняется одно из условий полиморфизма: единая для всех случаев сигнатура (единый метод вызова).

Удачи!
да нет же, я предлагаю иную реализацию. вызов конечно происходит через виртуальную таблицу, но в саму функцию this уже не передается. this используется только чтобы добраться до адреса функции, а дальше ее сигнатура остается такой же, как и при вызове без объекта.
Reply With Quote
Old 31.03.2004, 17:36   #32
Бакалавр
 
Join Date: 03 2002
Location: Detroit, MI, USA
Posts: 482
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Quote:
Originally Posted by Aram Hambardzumyan
да нет же, я предлагаю иную реализацию. вызов конечно происходит через виртуальную таблицу, но в саму функцию this уже не передается. this используется только чтобы добраться до адреса функции, а дальше ее сигнатура остается такой же, как и при вызове без объекта.
Извиняюсь за задержку с ответом.....

Арам,
Думаю, что наличие виртуальных статических функций вносит больше проблем, чем решает.
В конце концов получается достаточно запутанная конструкция: в случае вызова через указатель - одна функция (или больше), через тип - другая.... Слишком все сложно и нетривиально получается... Думаю так.
Идея же сама по себе интересна хотя бы тем, что заставляет подумать

Удачи!
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 05:10.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.