【问题标题】:c++ signatures, pointersC++ 签名,指针
【发布时间】:2010-04-05 12:33:14
【问题描述】:

这些签名有什么区别?


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 中遇到了指针,但函数签名中的符号对我来说是新的。任何人都可以解释一下吗?

【问题讨论】:

  • 快速回答:*指针。 &参考

标签: c++ method-signature


【解决方案1】:

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

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++ 中的引用与指针。

【讨论】:

    【解决方案2】:

    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,并且会为您隐式创建和取消引用,因此您在调用函数或函数内部时无需处理指针语法.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多