![]() |
#1 |
Соучастник
|
![]()
версия 3.0.
при попытке скомпилировать следующее: PHP код:
__________________
View Anton Soldatov's LinkedIn profile |
|
![]() |
#2 |
Соучастник
|
ЭПИЗОД II
это тоже не компилируется:
PHP код:
то же мне ООП.
__________________
View Anton Soldatov's LinkedIn profile |
|
![]() |
#3 |
Moderator
|
Я уже давненько не перечитывал ARM Страуструпа, но боюсь что в C++ тебя постигнет такая же неудача с этими конструкциями.
Модификатор final (его то как раз C++ нету, это из Java пришло) имеет смысл только для методов экземпляра, поскольку механизм "виртуализации" методов для статических методов не применим, так как они вызываются не в контексте экземпляра, соответственно у компилятора нет доступа к таблице виртуальных методов, привязываемой к экземпляру. При вызове статического метода класса, нужно указывать именно тот класс в котором этот метод определен, то есть вызов child: ![]() В дочерних классах наследуются только методы экземпляра (не статические). |
|
![]() |
#4 |
Соучастник
|
Цитата:
Изначально опубликовано fed
Я уже давненько не перечитывал ARM Страуструпа, но боюсь что в C++ тебя постигнет такая же неудача с этими конструкциями. Модификатор final (его то как раз C++ нету, это из Java пришло) имеет смысл только для методов экземпляра, поскольку механизм "виртуализации" методов для статических методов не применим, так как они вызываются не в контексте экземпляра, соответственно у компилятора нет доступа к таблице виртуальных методов, привязываемой к экземпляру. При вызове статического метода класса, нужно указывать именно тот класс в котором этот метод определен, то есть вызов child: ![]() В дочерних классах наследуются только методы экземпляра (не статические). аргумент 2: более того, final static void method_name - приводится в руководстве разработчика Axapta как правильный пример.
__________________
View Anton Soldatov's LinkedIn profile |
|