|
|
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, товарищи! Возможен ли сабж? В gcc-3.4.6 и MSVC 2005 Express код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. В Java это работает =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2007, 16:26:16 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
в B дописать using A::f; ЗЫ С++ не жаба ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2007, 16:31:07 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
В С++ перегружаемая функция по умолчанию скрывает все перегружаемые. Попробуй так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2007, 16:32:04 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
Спасибо! Вот это фича... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2007, 16:52:11 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
Это не фичаб это в стандарте прописано, иначе возникают проблемы с множественным наследованием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2007, 17:00:34 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
Проблемы возникли, а множественного наследования у меня нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 09:15:02 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
AkhВ С++ перегружаемая функция по умолчанию скрывает все перегружаемые. а если их рядом описать? Код: plaintext 1. Или (2): redefinition of symbol f (1): symbol f was defined here ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 11:30:01 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
maXmo AkhВ С++ перегружаемая функция по умолчанию скрывает все перегружаемые. а если их рядом описать? Код: plaintext 1. Или (2): redefinition of symbol f (1): symbol f was defined here Ну, блин, надо понимать сказанное в контексте примера, то бишь, наследование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 11:39:19 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
On Tue, 30 Oct 2007 11:30:01 +0300, maXmo <nospam@sql.ru> wrote: > Автор: maXmo > Akh > В С++ перегружаемая функция по умолчанию скрывает все перегружаемые. > > а если их рядом описать? > > void f() {} > void f(int i) {} > тоже будет видна только последняя? > Или > (2): redefinition of symbol f > (1): symbol f was defined here > Тема Ответить Сообщение Это будут две разные функции. В С++ функции различаются не только по имени, но и по списку аргументов. -- Здесь у нас туманы и дожди, здесь у нас холодные рассветы, Здесь на неизведанном пути ждут замысловатые сюжеты! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 13:57:38 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
LeshijЭто будут две разные функции. В С++ функции различаются не только по имени, но и по списку аргументов. Это и называется перегрузка!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 15:58:47 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
это называется скрытие. Функция из класса наследника скрывает функцию из базового класса. Очень не рекомендуют так поступать, кстати. Если нужна перегрузка, в базовом классе делаем ф-цию f() виртуальной, и переопределяем её в наследнике, т.е. должно получиться: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 16:26:10 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
egorychФункция из класса наследника скрывает функцию из базового класса.раньше так было только если сигнатуры совпадали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 16:31:56 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
название плюс типы параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 16:33:18 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
На деле A::f() мне не надо переопределять. Она использует данные своего класса, в наследнике мне надо использовать именно её, переопределение мне ни к чему. Кроме того, в наследнике мне нужна ещё одна ф-я из базового класса с таким названием, но переопределенная. Она как раз виртуальная: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. egorych , всетаки предлагаете сделать A::f() виртуальной, в потомке её переопределить и вызвать? Чтобы не было путаницы с using: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 16:46:04 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
абсолютно верно, и главное - не будет никаких глюков и косяков :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 16:50:59 |
|
||
|
Перегрузка метода базового класса.
|
|||
|---|---|---|---|
|
#18+
Окей, так и поступлю. Нет у меня мира с этим скрытием. Зачем оно? Когда один базовый класс, нет никакой неопределенности у компилятора при поиске ф-ии A::f(). Но она появляются у программиста, когда такое случается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2007, 17:00:39 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34905202&tid=2027897]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
203ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 529ms |

| 0 / 0 |
