它是对一个函数的引用还是什么?
它定义了类型“参照以两个int
S和返回一个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
你是什么意思'初始化程序需要'? – Nawaz
@Nawaz:“需要初始化”我的意思是你必须给一个初始化程序,即在定义时初始化它。例如在'int a = 3;''3'部分是初始化器。就像'int b(5);'中的'(5)'一样。在上面的例子中,这意味着'intref ri;'会是一个错误,因为没有初始化器,但是'intref ri(i);'是因为有一个初始化器(即'(i)')。 – celtschk
@celtschk:谢谢....... – bhuwansahni
这是一个typedef
,所以它不能被“初始化”,它只是引入了一个新的名称为类型“引用函数返回一个int,并采取两个整数作为参数”。
它是一个typedef
到参考函数。并且typedef不能被初始化。想想typedef int rank_t;
也没有初始化。
这是需要两个参数并且其返回类型为int
一个类型定义未初始化函数的引用:
typedef int (&rifii) (int,int);
在声明rifii
类型的引用才把它必须被初始化。
rifii r = foo;
其中“foo
”是一个函数,int foo(int, int);
typedef
就像是进入一个晚宴,并说你好,我是埃德 - 在那道菜没有肉。这个定义将赋予这些骨头的肉体。
http://www.velocityreviews.com/forums/t287939-reference-to-a-function.html – zengr