它是对函数的引用还是什么?

时间:2011-11-12 09:17:03

标签: c++

以下声明是什么意思?

typedef int (&rifii) (int,int);

它是对函数的引用吗?如果是,不应该初始化吗?

5 个答案:

答案 0 :(得分:8)

它定义 type “对一个函数的引用,该函数需要两个int并返回一个int”。需要初始化该类型的变量,但不能将初始化程序放入typedef中。它与例如没有区别。 int

int i;

typedef int& intref; // no initializer allowed
intref ri(i); // initializer required

int f(int, int);

typedef int (&rifii) (int,int); // no initializer allowed
rifii rf(f); // initializer required

答案 1 :(得分:2)

它是一个typedef,所以不能“初始化”,它只是为类型“引用函数返回一个int并将两个int作为参数”引入了一个新名称。

答案 2 :(得分:1)

它是一个函数的引用,它接受两个参数,其返回类型为int

未初始化typedef:

typedef int (&rifii) (int,int);

当您声明类型rifii的引用时,必须初始化它。

rifii r = foo;

{' foo'是一个函数,int foo(int, int);

答案 3 :(得分:0)

对函数的引用typedef。并且无法初始化typedef。想想typedef int rank_t;也没有初始化。

答案 4 :(得分:-2)

typedef就像进入一个晚宴,说你好,我是Ed - 那道菜上没有肉。这个定义会给那些骨头带来肉体。