Why use this->ObjectName instead of this.ObjectName in c++
本问题已经有最佳答案,请猛点这里访问。
你好,我想知道为什么我的世界,我们在C + +对象使用instead of the this→this.objectname when to an referring对象在C + +。This is using the这个简单的表对象:→P></
1 2 3 4 | int x = 34; void take(int x) { this->x = x; } |
但在其他编程语言Java类,我们使用:P></
1 2 3 4 | int x = 34; void take(int x) { this.x = x; } |
为什么我知道什么是this statement is asking does the C++中的this statement from the Java有什么区别P></
这只适用于指针。类/结构类型(包含引用)的表达式使用更熟悉的点表示法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class Whatever { public: int x; void take(int n); }; class T { public: int x; }; void Whatever::take(int n) { T t; T *pt = &t; // pointer T &tr = t; // reference is basically just an alias pt->x = n; (*pt).x = n; // can dereference a pointer, then use like a reference tr.x = n; // Same for this. this->x = n; (*this).x = n; } |
对你来说奇怪的是,EDCOX1 2是一个C++中的指针,而不是一个引用。
另请参见:为什么"this"是指针而不是引用?(stroustrup在用该语言创建引用之前介绍了
在
1 2 3 4 5 6 | Myclass{ public: void foo(){} }; Myclass ob; //as value ob.foo(); |
和
1 2 | Myclass * ob; //as pointer ob->foo(); |
注意:除了指针之外,在EDCOX1的7引用中还有另一种引用方式,这是引用本身,但是在C++中,引用被用作对象的别名,所以它类似于值类型(如Java/Cβ)。
1 2 3 | Myclass ob; //as value Myclass& ref=ob; // reference to ob ref.foo(); |
在C++中,你有指针。使用指针