【问题标题】:Difference between func(int& x) and func(int &x) in C++ [duplicate]C ++中func(int&x)和func(int&x)之间的区别[重复]
【发布时间】:2015-09-29 19:17:56
【问题描述】:

我正在尝试学习 C++ 的基础知识。我正在阅读的书使用以下语法:

func(int& x);

在互联网上,我主要看到以下语法:

func(int &x);

两者似乎完全相同。有什么区别吗?

【问题讨论】:

  • 人们有编码标准——有些人更喜欢前者而不是后者。但是没有区别
  • 你从未见过func(int & x);
  • @DavidSchwartz 我现在有。 :-)
  • @david 当然,但是func(int      &      x); 呢? (好吧好吧,现在isn't valid C++
  • @Yakk 该代码没有空格。带空格的版本will compile.

标签: c++ function parameter-passing pass-by-reference


【解决方案1】:

实际上没有区别。只是一种风格偏好。 same is true of where you put the pointer

【讨论】:

  • 虽然你会在点击链接时阅读到它,但也许你应该在这里添加一点关于被误导相信在类型旁边添加星号会使所有变量指针。
  • @DavidVereb:或者按照 Bjarne 的建议去做:“每个声明声明一个名称可以最大限度地减少问题”。
  • “只是一种风格偏好”——不仅如此,它还与强调有关。
  • @zenith ... 这将是一种风格偏好。就编译器而言,它们是相同的。
【解决方案2】:

在 Bjarne Stroustrup 的网站上查看Is int* p; right or is int *p; right? 常见问题解答的答案。它用于指针,但他所写的内容同样适用于引用:

两者都是“正确的”,因为两者都是有效的 C 和 C++,并且两者都是 具有完全相同的含义。 [...] int* p;int *p; 之间的选择不是关于对错,而是关于风格和重点。

【讨论】:

    【解决方案3】:

    我更喜欢int& x。这样引用就成为类型的一部分,它是一个称为 x 的“int 引用”,而不是“int,x 的引用”

    我发现将“int 引用”视为离散类型可以减少混淆,但对编译器来说是一回事。

    【讨论】:

    • 这不回答 OP 的问题,这只是提供您的意见/偏好。
    • @CoryKramer 我已经在考虑将问题作为“基于意见” 来结束,或者找到一个好的副本。
    • @πάνταῥεῖ 这个问题本身并不是基于意见的。他们的问题的答案是“不,没有区别”。似乎确实有一些重复的问题,或者至少是非常密切相关的问题。
    • 它确实回答了这个问题,并给出了一些背景说明为什么一种方法(稍微)更好(在我看来)。
    • @ventsyv:& 符号不会成为类型的一部分。给定int& a, b; 既是a 又是b 引用?
    猜你喜欢
    • 1970-01-01
    • 2010-09-16
    • 2011-02-09
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多