Войти

Показать полную графическую версию : [решено] одноименные методы в классе


Glareone
19-06-2010, 14:41
Доброго времени суток.
Есть необходимость объявить в классе несколько методов Add с разными аргументами. Можно ли так сделать?Не нарушается ли полиморфизм?
PS Про виртуальные методы знаю,но в моей задаче виртуальным его объявить не получится.

class Seq:public Prototype
{
char *p;
int t;
//....................
public:
Prototype* clone() const {return new Seq (this);
void Add(const Any&); //Any тоже потомок от Prototype
void Add(char *p);
//............................................
}

Glareone
20-06-2010, 09:14
Да.Такое возможно. Компилятор сам определяет,какой метод(или функцию) требуется вызвать по фактически вводимым аргументам. Называется это Разрешением перегрузки(или мнемоникой перегрузки).

PS Обидно, что об этом умалчивается и в Википедии и многих книгах по программированию, где в пример ставится лишь перегрузка операций и ни слова не упоминается о одноименных методах или функциях в одной области видимости.




© OSzone.net 2001-2012