在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;
}
答案 0 :(得分:2)
你无法真正比较它们,它们是不可互换的,但是因为在C ++中你可以在某些情况下保留某些东西,这里看起来就像它们一样。
事实上,这两行都是:
Bar::myInt
这意味着,设置对象myInt
(类Bar
范围内的this
成员)的值,该值由{{指向的对象封装1}},到(其他)变量myInt
的值。
您可以省略Bar::
因为this
是Bar*
所以这是隐含的;你可以省略this->
,因为你是一个成员函数,所以也是隐含的。
更一般地说,->
执行指针取消引用和对象访问,而::
是“范围解析运算符”,它完全限定名称。
答案 1 :(得分:-1)
“ - &gt;”用作指针 “。”用于对象成员变量/方法 “::”用于静态变量/方法或来自另一个范围的对象。