sandy
написал 18 июня 2007 года в 13:49 (874 просмотра)
Ведет себя
как мужчина; открыл 10 тем в форуме, оставил 54 комментария на сайте.
Возможна ли такая конструкция:
class Function {
public:
Function() {}
virtual void eval()=0;
virtual int eval()=0;
virtual double eval()=0;
virtual char eval()=0;
virtual char* eval()=0;
};
class MyFunction1 : public Function
{
public:
MyFunction1(): {}
int eval(int i)
{
/* … */
return i;
}
void eval()
{
/* … */
}
};
class MyFunction2 : public Function
{
public:
MyFunction2() {}
char eval(char i)
{
/* … */
return i;
}
};
/* … */
А потом еще и так:
std::map m;
m["MyFunction1"]=new MyFunction1;
m["MyFunction2"]=new MyFunction2;
/* … */
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Так нельзя точно. Тогда так:
class Function {
public:
Function() {}
virtual ~Function() {}
};
С точки зрения логики это точно более правильный вариант, но 1-й тоже возможен.
О первом можно подробнее. Разве можно перегружать чисто виртуальные функции?
Может я чего забыл, но вроеде можно. Сейчас проведу эксперемент. В предыдущем посте я думал, что ты пишешь о виртуальном деструкторе, его иметь очень желательно в данном случае.
Да верно их перезагружать нельзя.
Уточнение нельзя перезагружать тип возващаемого значения для виртуальных функций.