这个程序中的“&”有什么区别
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
在第二行中,您声明 reference 到 Circle
。
在第三行中,您使用 的地址 Circle
。
所以第二行是使用&
声明一个引用类型.
第三行使用&
作为运算符的地址。
以下是 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
在第二行中,您声明 reference 到 Circle
。
在第三行中,您使用 的地址 Circle
。
所以第二行是使用&
声明一个引用类型.
第三行使用&
作为运算符的地址。