【发布时间】:2014-03-25 20:38:55
【问题描述】:
我对以下关于重载 -> 运算符的示例程序有疑问,在 C++ 教程中也是如此:
5 class myclass
6 {
7 public:
8 int i;
9
10 myclass *operator->()
11 {return this;}
12 };
13
14 int main()
15 {
16 myclass ob;
17
18 ob->i = 10;
19 cout << ob.i << " " << ob->i << endl;
20
21 return 0;
22 }
$ ./a.out
10 10
我想了解第 18 行的工作原理。我知道“ob”不是指针,但由于“class myclass”已经定义了运算符“->”,“ob->i”是有效的(在语法上),到目前为止很好。但是,“ob->”返回一个指针,我看不出它是如何被取消引用来访问成员“i”并设置它的。
我假设上面的解释也将解释第 19 行“ob->i”如何打印为 int。
谢谢你, 艾哈迈德。
【问题讨论】: