C++ int&;a及综合及;A.
此代码:C++ int&;a及综合及;A.,c++,reference,C++,Reference,此代码: int a = 5; int& b = a; b = 7; cout << a; inta=5; int&b=a; b=7; coutNo,除了编码方式外,两者完全没有区别。我认为关于编码风格的主要论点是: int& a, b; 将a声明为int&和b声明为int这对编译器的编写方式没有影响。正确与否取决于代码风格。在类似C语言中,空白大部分并不重要 列出的所有版本解析为相同的三个标记: int & b 因此,它们对编译器的意义相同 只有当空格分隔两
int a = 5;
int& b = a;
b = 7;
cout << a;
inta=5;
int&b=a;
b=7;
coutNo,除了编码方式外,两者完全没有区别。我认为关于编码风格的主要论点是:
int& a, b;
将a
声明为int&
和b
声明为int
这对编译器的编写方式没有影响。正确与否取决于代码风格。在类似C语言中,空白大部分并不重要
列出的所有版本解析为相同的三个标记:
int
&
b
因此,它们对编译器的意义相同
只有当空格分隔两个字母数字标记时,空格才有意义。即使如此,只要有空格,空格的数量和类型也不重要。但是任何一种标点符号总是与字母数字分开,不需要空格
因此,您的代码可以缩短为:
using namespace std;int a=5;int&b=a;b=7;cout<<a;
使用名称空间std;INTA=5;int&b=a;b=7;库特
一般来说,符号与是否相对于类型和标识符放置有关系吗
发布的示例并不重要,但在某些情况下确实如此:
int & a, b; // b is not a ref
int const * a; // pointer to const int
int * const a; // const pointer to int
与往常一样,空白并不重要。这没有任何区别,因为c/c++/java这些语言不区分空间。这是两种功能等效的声明:
int& a; // & associated with type
int &a; // & associated with variable
将&
或*
与类型名称关联,反映了程序员希望有一个单独的指针类型。然而,将&
或*
与类型名而不是变量相关联的困难在于,根据正式的C++
语法,&
和*
都不是分布在变量列表上的。因此,很容易制造误导性声明。例如,以下声明创建一个而不是两个整数引用
int& a, b;
这里,b
被声明为整数(不是整数引用),因为在声明中使用时,&
(或*
)链接到单个变量
它在前面,而不是后面的类型。这个声明的问题是,从视觉上看,a和b似乎都是引用类型,尽管只有a
是引用,因此视觉上的混淆不仅误导了C++
新手程序员,偶尔也会误导有经验的程序员
无论您是为C++
编译器编写int&a
还是int&a
,这都无关紧要。但是,为了避免混淆,&
和*
应该与变量关联,而不是与类型关联。另一个重要的问题是宏定义。如果函数名和后面的开括号之间没有空格,则宏与函数类似。如果有,则括号是替换列表的一部分。@Ryan我猜int&a,b;将给出编译错误,因为引用a已声明但未初始化。@Shailesh:对,它将是int&a=foo,b=bar
。