这个程序中的“&”有什么区别

What's the difference between "&" in this program

以下是 C++ 程序的一部分:

Circle circle1, &circle2 = circle1, *p = &circle2;

我想知道这两个 & 之间有什么区别?非常感谢。

第一个(使用&)是声明一个Circle引用,后者是address-of运算符,用于获取[=11=的内存地址].

Circle circle1, &circle2 = circle1, *p = &circle2;

相当于:

Circle circle1;
Circle &circle2 = circle1;  // & is used to declare a reference variable
Circle *p = &circle2;       // & is used to take the address of circle2

它们有两种截然不同的含义。拆分条款更容易看出。

Circle circle1; // A Circle object

Circle& circle2 = circle1; // A Circle reference

Circle* p = &circle2; // A Circle pointer takes the address of a Circle object

在第二行中,您声明 referenceCircle

在第三行中,您使用 的地址 Circle

所以第二行是使用&声明一个引用类型.

第三行使用&作为运算符的地址。