此代码:
int a = 5;
int& b = a;
b = 7;
cout << a;
打印出7,用int& b
替换int &b
也打印出7。
事实上,int&b
和int & b
也是如此。
我也用一个简单的类来测试这种行为。一般来说,是否相对于类型和标识符放置&符号是否重要?感谢。
答案 0 :(得分:17)
不,除了编码风格之外绝对没有区别。我认为关于编码风格的主要论点是这个声明:
int& a, b;
将a
声明为int&
,将b
声明为int
。
答案 1 :(得分:9)
在类C语言中,空白几乎无关紧要。
您列出的所有版本都解析为相同的三个令牌:
int
&
b
所以它们对编译器意味着相同。
空白的唯一重要时刻是它分离两个字母数字标记,即使这样,只要有一些空格的数量和类型无关紧要。但任何类型的标点符号总是成为与字母数字相对应的单独标记,不需要空格。
因此,您的代码可以缩短为:
using namespace std;int a=5;int&b=a;b=7;cout<<a;
需要剩下的空白。
答案 2 :(得分:6)
一般情况下,是否相对于类型和标识符放置&符号是否重要?
示例发布并不重要,但有些情况可以:
int & a, b; // b is not a ref
int const * a; // pointer to const int
int * const a; // const pointer to int
与往常一样,空白并不重要。
答案 3 :(得分:2)
这是两个功能相同的声明:
int& a; // & associated with type
int &a; // & associated with variable
将&
或*
与类型名称相关联反映了程序员拥有单独指针类型的愿望。但是,根据正式的&
语法,将*
或C++
与类型名称而不是变量相关联的难度不是&
也不是*
{1}}是对变量列表的分配。因此,容易产生误导性的声明。例如,以下声明创建一个而不是两个整数引用。
int& a, b;
这里,b
被声明为整数(不是整数引用),因为当在声明中使用时,&
(或*
)链接到单个变量
它先于,而不是它所遵循的类型。这个声明的问题在于,a和b看起来似乎都是引用类型,即使只有a
是引用,因此视觉混淆不仅会误导新手C++
程序员,而且偶尔会遇到程序员也是。
是否为int &a
编译器编写int& a
或C++
并不重要。但是,为避免混淆,&
和*
应与变量相关联,而不是类型。
答案 4 :(得分:1)
它对编译器的编写方式没有任何影响。哪个是正确的是代码风格问题。
答案 5 :(得分:1)
它没有任何区别,因为c / c ++ / java这些语言对空间不敏感。