С++ для начинающих

       

Функции-кандидаты


Рассмотрим два вида вызовов функции-члена:

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.) Если для вызова функции не оказывается кандидатов, компилятор выдает сообщение об ошибке.



Содержание раздела