有什么区别"这个"和" ::"?

时间:2018-02-16 19:29:57

标签: c++

在setMyInt函数中我使用了两个语句来设置myInt变量。虽然它们都给了我相同的结果。他们的工作有任何概念上的差异吗?

#include <iostream>
using namespace std;
class Bar{
    int myInt;

public:
    const int getMyInt() const {
        return myInt;
    }

    void setMyInt(int myInt) { 

        Bar::myInt = myInt;
       this->myInt=myInt;
    }
};

int main(){
    Bar obj;
    obj.setMyInt(5);
    cout<<obj.getMyInt();
    return 0;
}

2 个答案:

答案 0 :(得分:2)

你无法真正比​​较它们,它们是不可互换的,但是因为在C ++中你可以在某些情况下保留某些东西,这里看起来就像它们一样。

事实上,这两行都是:

Bar::myInt

这意味着,设置对象myInt(类Bar范围内的this成员)的值,该值由{{指向的对象封装1}},到(其他)变量myInt的值。

您可以省略Bar::因为thisBar*所以这是隐含的;你可以省略this->,因为你是一个成员函数,所以也是隐含的。

更一般地说,->执行指针取消引用和对象访问,而::是“范围解析运算符”,它完全限定名称

答案 1 :(得分:-1)

“ - &gt;”用作指针 “。”用于对象成员变量/方法 “::”用于静态变量/方法或来自另一个范围的对象。