Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2008-01-08 16:45:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
А знаете ли вы, что gcc такое понимает:
class C {
public:
  virtual void * f () const = 0;
};

class D: public C {
public:
  virtual int * f () const { return 0; }
};


Хоть и выдает предупреждение:

deprecated covariant return type for ‘virtual int* D::f() const'


(Добавить комментарий)


[info]nikto
2008-01-08 17:50 (ссылка)
Т.е. из-за отличия типов возвращаемого значения компилятор считает это разными функциями с одинаковыми именами? Наверное, "грабли" - самое подходящее слово.

(Ответить) (Ветвь дискуссии)


[info]kouzdra
2008-01-08 17:56 (ссылка)
Нет - он как раз считает это перегрузкой

(Ответить) (Уровень выше)


[info]dluciv.livejournal.com
2008-01-08 18:19 (ссылка)
Гы.
А с параметрами и с исключениями ковариантность не тянет?

(Ответить) (Ветвь дискуссии)


[info]kouzdra
2008-01-08 20:07 (ссылка)
Тянет, но в самих параметрах (там правда должна быть контравариантность) не допускает

(Ответить) (Уровень выше)


[info]blue_slonopotam
2008-01-09 04:30 (ссылка)
int от void наследуется ?

(Ответить) (Ветвь дискуссии)


[info]potan
2008-01-09 13:35 (ссылка)
int * от void *

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2008-01-09 13:36 (ссылка)
Там не наследование на самом деле, а subtyping. Наследование - частный случай subtyping'a, но обратное неверно.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]potan
2008-01-09 13:49 (ссылка)
Да, действительно. И в другую сторону - int * подтип void *.

(Ответить) (Уровень выше)