gpt4 book ai didi

c++ - "this"和 "::"有什么区别?

转载 作者:行者123 更新时间:2023-11-28 04:48:02 24 4
gpt4 key购买 nike

在 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;
}

最佳答案

你不能真正比较它们,它们也不可互换,但因为在 C++ 中你可以在某些情况下忽略某些东西,这里看起来它们是可以互换的。

事实上,这两行都是以下内容的缩写:

this->Bar::myInt = myInt;

这意味着,设置对象的值Bar::myInt (类myInt范围内名为Bar的成员),被this指向的对象封装, 到(其他)变量的值 myInt .

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

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

关于c++ - "this"和 "::"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com