这个>数据和(* this).data在C ++中有什么区别?

时间:2016-03-23 19:18:37

标签: c++ class pointers

我正在阅读我书中的这个指针。我在书中遇到了一些含糊不清的内容,无法理解。我知道这是一个特殊的指针,用于确定调用类的某个成员函数的对象。此外,因为我们使用箭头操作符引用结构中的元素可以与此处使用的箭头操作符相关但是(* this).data 是什么?它们是彼此的别名吗?

3 个答案:

答案 0 :(得分:4)

没有区别。

this->data

只是

的简化

(*this).data

它将取消引用和成员访问结合到一个操作中。

答案 1 :(得分:0)

他们在你的情况下完全一样。

(*this).data 

example: this = Button* //pointer
example: *this = Button& // reference

指针和对button的引用也会这样做。两者都可以完全访问该对象。不同之处在于需要使用->运算符访问指针,并且可以使用.运算符访问引用。

答案 2 :(得分:0)

没有区别,

    this->data;
    //is the same thing as 
    (*this).data;

我们在这里看到的唯一一件事就是操作顺序。自从。在优先级列表上比*更高,编码它的纯粹方式是(* this).data(以确保*将在。之前发生。)。开发人员只是认为有一个替代方案是一个好主意,它可以解决并避免像*(this).data这样的错误,这些错误可能很难发现并导致程序崩溃