Функции-кандидаты
Рассмотрим два вида вызовов функции-члена:
mc.mf( arg );
pmc->mf( arg );
где mc – выражение типа myClass, а pmc – выражение типа “указатель на тип myClass”. Множество кандидатов для обоих вызовов составлено из функций, найденных в области видимости класса myClass при поиске объявления mf().
Аналогично для вызова функции вида
myClass::mf( arg );
множество кандидатов также состоит из функций, найденных в области видимости класса myClass при поиске объявления mf(). Например:
class myClass {
public:
void mf( double );
void mf( char, char = '\n' );
static void mf( int* );
// ...
};
int main() {
myClass mc;
int iobj;
mc.mf( iobj );
}
Кандидатами для вызова функции в main() являются все три функции-члена mf(), объявленные в myClass:
void mf( double );
void mf( char, char = '\n' );
static void mf( int* );
Если бы в myClass не было объявлено ни одной функции-члена с именем mf(), то множество кандидатов оказалось бы пустым. (На самом деле рассматривались бы также и функции из базовых классов. О том, как они попадают в это множество, мы поговорим в разделе 19.3.) Если для вызова функции не оказывается кандидатов, компилятор выдает сообщение об ошибке.