在类/结构中访问澄清

时间:2013-07-14 22:43:29

标签: c++

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的内存地址。

非常感谢你。 ^^

3 个答案:

答案 0 :(得分:2)

不确定问题是什么,因为这里没有引用(这是用于指针的术语)......

但是,让我给你一个不同于答案的答案:

由于axes是一个局部变量,编译器知道它的确切地址,它也知道结构的确切布局,因此它可以直接访问其中的x。编译后的代码不必首先“访问”axes

当然,这是实践中发生的事情......

答案 1 :(得分:1)

.是一个运算符(成员访问,不可重载),因此首先计算点之前的表达式,然后用于访问该成员。如果foo().x返回foo类型的值,您也可以说Axes

答案 2 :(得分:1)

首先,我认为不会有任何解除引用,因为它的术语用于指针。

但是在这里,axes首先被取消引用(事实上作为局部变量被访问),.之后的表达式在这种情况下是x

就像先从主门进入家中,然后到达特定的房间。