class Axes
{
public:
int x;
int y;
int z;
};
为了寻找我的好奇心,我写了下面显示的例子。现在我的问题是关于axes.x
,在这种情况下,x
变量是以2步或1步进行访问的,考虑到x
在一个类中的事实?换句话说,在访问axes
变量之前访问x
变量的剂量,或者在编译后axes.x
被认为是它自己的单个引用?
Axes axes;
std::cout << axes.x;
更新:我出于某种原因继续认为在编译之后x
将被其自己的内存地址访问,而不必转到axes
的内存地址。
非常感谢你。 ^^
答案 0 :(得分:2)
不确定问题是什么,因为这里没有引用(这是用于指针的术语)......
但是,让我给你一个不同于答案的答案:
由于axes
是一个局部变量,编译器知道它的确切地址,它也知道结构的确切布局,因此它可以直接访问其中的x
。编译后的代码不必首先“访问”axes
。
当然,这是实践中发生的事情......
答案 1 :(得分:1)
.
是一个运算符(成员访问,不可重载),因此首先计算点之前的表达式,然后用于访问该成员。如果foo().x
返回foo
类型的值,您也可以说Axes
。
答案 2 :(得分:1)
首先,我认为不会有任何解除引用,因为它的术语用于指针。
但是在这里,axes
首先被取消引用(事实上作为局部变量被访问),.
之后的表达式在这种情况下是x
。
就像先从主门进入家中,然后到达特定的房间。