пятница, 4 июня 2010 г.

Function overload

Как известно, если в наследнике определить функцию с таким же именем, как в базовом классе, то она скроет все функции этого базового класса с этим именем не смотря на аргументы. Например,
struct B {
void f( char );
void f( std::string );
};

struct D : B {
void f(int) { f('c'); } // получаем рекурсивный вызов D::f(int)
};

Однако, если мы хотим оставить функцию(или несколько функций) базового класса, а не скрывать её, то можно написать using B::f;
struct D : B {
using B::f;
void f( int ) { f('c'); } // вызывается B::f(char)
};

Комментировать в ВКонтакте