int&a和int&a之间有区别吗?

new*_*mer 13 c++ reference

这段代码:

int a = 5;
int& b = a;
b = 7;
cout << a;
Run Code Online (Sandbox Code Playgroud)

打印出7,替换int& bint &b打印7.

事实上也是如此int&b,并int & b.

我用一个简单的类来测试这种行为.一般来说,是否相对于类型和标识符放置&符号是否重要?谢谢.

Ry-*_*Ry- 17

不,除了编码风格之外绝对没有区别.我认为关于编码风格的主要论点是这个声明:

int& a, b;
Run Code Online (Sandbox Code Playgroud)

声明a作为int&b作为int.


Ben*_*igt 9

在类C语言中,空白大多无关紧要.

您列出的所有版本都解析为相同的三个令牌:

  • int
  • &
  • b

所以它们对编译器意味着相同.

空白的唯一重要时刻是它将两个字母数字标记分开,即使这样,只要存在一些空格的数量和类型并不重要.但任何类型的标点符号总是成为与字母数字相对应的单独标记,不需要空格.

所以你的代码可以变得如此简短:

using namespace std;int a=5;int&b=a;b=7;cout<<a;
Run Code Online (Sandbox Code Playgroud)

剩下的空白是必需的.

  • 另一次重要的是宏定义。如果函数名称和后面的左括号之间没有空格,则该宏类似于函数。如果有,则括号是替换列表的一部分。 (2认同)

Pub*_*bby 6

一般来说,是否相对于类型和标识符放置&符号是否重要?

发布的示例并不重要,但有些情况下:

int & a, b;    // b is not a ref
int const * a; // pointer to const int
int * const a; // const pointer to int
Run Code Online (Sandbox Code Playgroud)

一如既往,空白并不重要.