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




Параметры и тип возврата - часть 3


// typedef представляет собой тип функции

typedef int functype( const string &, const string & );

void sort( string *, string *, functype );

sort() рассматривается компилятором как объявленная в виде

void sort( string *, string *,

           int (*)( const string &, const string & ) );

Два этих объявления sort() эквивалентны.

Заметим, что, помимо использования в качестве параметра, указатель на функцию может быть еще и типом возвращаемого значения. Например:

int (*ff( int ))( int*, int );

ff() объявляется как функция, имеющая один параметр типа int и возвращающая указатель на функцию типа

int (*)( int*, int );

И здесь использование директивы typedef делает объявление понятнее. Объявив PF с помощью typedef, мы видим, что ff() возвращает указатель на функцию:

// Использование директивы typedef делает

// объявления более понятными

typedef int (*PF)( int*, int );

PF ff( int );

Типом возвращаемого значения функции не может быть тип функции. В этом случае выдается ошибка компиляции. Например, нельзя объявить ff() таким образом:

// typedef представляет собой тип функции

typedef int func( int*, int );

func ff( int ); // ошибка: тип возврата ff() - функция




Содержание  Назад  Вперед