0
class Axes
{

public:

    int x;
    int y;
    int z;

};

出于好奇,我编写了下面显示的示例。现在我的问题是,考虑到在一个类中的事实,这种情况下axes.x的变量是分两步还是一步访问的?换句话说,是在访问变量之前访问变量,还是在编译后将其视为自己的单一引用?xxaxesxaxes.x

Axes axes;
std::cout << axes.x;

更新:我只是出于某种原因一直在想,在它被编译之后,它x会被它自己的内存地址访问,而不必去axes.

太感谢了。^^

4

3 回答 3

2

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

但是让我给你一个与发布的答案不同的答案:

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

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

于 2013-07-14T22:55:51.450 回答
1

.一个操作符(成员访问,不可重载),所以点之前的表达式先求值,然后用来访问成员。你也可以说foo().xiffoo返回了一个 type 的值Axes

于 2013-07-14T22:49:09.787 回答
1

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

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

这就像先从大门进入家中,然后再进入特定的房间。

于 2013-07-14T22:50:20.133 回答