类操作符之间的区别

Sta*_*ovy -1 c++ pointers class operators

我正在阅读C++,并想知道是否有人可以向我解释一些类操作符的一些差异.有问题的经营者是:

* & . ->

我了解其中一些,但是,我没有看到一些之间的区别.例如:

*x
&x
x.y
(*x).y
x -> y
Run Code Online (Sandbox Code Playgroud)

有人可以使用一个例子并解释一下它们会有什么不同吗?

Ale*_*ler 6

采取我的样品给出的这种小结构:

struct MyStruct {
   int y;
};
Run Code Online (Sandbox Code Playgroud)

*x取消引用指针x.返回值是对指向的对象的引用x:

MyStruct* x = ...;
MyStruct xval = *x;
// or
MyStruct& xref = *x;
// read up on references to understand the latter
Run Code Online (Sandbox Code Playgroud)

&x取地址x.因此结果是指向x.

MyStruct x;
MyStruct* pointer_to_x = &x;
Run Code Online (Sandbox Code Playgroud)

x.y访问y对象中指定的成员x.

MyStruct x;
x.y = 5;
int a = x.y + 2;
// a==7
Run Code Online (Sandbox Code Playgroud)

(*x).y是第一个和第三个的组合:指针被解除引用,.-operator用于访问它指向的对象的成员.

a = (*pointer_to_x).y;
Run Code Online (Sandbox Code Playgroud)

x->y是(除非被邪恶的人覆盖)的捷径(*x).y.

a = pointer_to_x->y;
Run Code Online (Sandbox Code Playgroud)