c ++签名,指针

时间:2010-04-05 12:33:15

标签: c++ method-signature

这些签名之间有什么区别?


T * f(T & identifier);
T & f(T & identifier);
T f(T & identifier);

void f(T * identifier); void f(T & identifier); void f(T identifier);

我在c中遇到了指针,但功能签名中的amperstand对我来说是新的。任何人都能解释一下吗?

2 个答案:

答案 0 :(得分:3)

类型声明中的&符号表示引用类型。

int i = 4;
int& refi = i;  // reference to i
int* ptri = &i; // pointer to i

refi = 6;  // modifies original 'i', no explicit dereferencing necessary
*ptri = 6; // modifies through the pointer

引用与指针有许多相似之处,但如果不需要地址算法,它们更容易使用且不易出错。此外,与指针不同,引用在初始化后不能反弹到“指向”另一个对象。只需要谷歌搜索引用与C ++中的指针。

答案 1 :(得分:1)

T * f(T & identifier);
这是一个引用T并返回指向T的函数的函数。

T & f(T & identifier);
这是一个函数,它引用T并返回对T的引用。

T f(T & identifier);
这个引用了一个T并返回一个T的副本。

void f(T * identifier);
这个指针指向T并且不返回任何内容。

void f(T & identifier);
这个引用了一个T并且什么也没有返回。

void f(T identifier);
这个采用T值(副本)并且不返回任何内容。

引用的行为几乎与指针完全相同,只是引用永远不会被设置为NULL,并且隐式创建引用并取消引用,因此在调用函数或函数内部时不需要处理指针语法