我的 class 方法中需要 "this pointer" 吗?
Do I need the "this pointer" in my class methods?
getA()&getB() 和 setA()&setB() 有区别吗?
如果它们相同,首选语法是什么?
class A{
public:
int x;
int getA(){return x;}
int getB(){return this->x;}
void setA(int val){ x = val;}
void setB(int val){ this->x = val;}
};
int main(int argc, const char * argv[]) {
A objectA;
A objectB;
object.setA(33);
std::cout<< object.getA() << "\n";
objectB.setB(32);
std::cout<< object.getB() << "\n";
return 0;
}
在你的用例中也是一样的。通常最好尽可能省略 this->
,除非您有本地编码风格指南/约定。
当你有一个隐藏成员变量的局部变量或参数时,这很重要。例如:
class Enemy {
public:
int health;
void setHealth(int health) {
// `health` is the parameter.
// `this->health` is the member variable.
this->health = health;
}
};
或者,可以通过在项目中使用命名约定来避免这种情况。例如:
- 始终在成员变量后缀
_
,如health_
- 始终在成员变量前加上
m_
,例如m_health
getA()&getB() 和 setA()&setB() 有区别吗?
如果它们相同,首选语法是什么?
class A{
public:
int x;
int getA(){return x;}
int getB(){return this->x;}
void setA(int val){ x = val;}
void setB(int val){ this->x = val;}
};
int main(int argc, const char * argv[]) {
A objectA;
A objectB;
object.setA(33);
std::cout<< object.getA() << "\n";
objectB.setB(32);
std::cout<< object.getB() << "\n";
return 0;
}
在你的用例中也是一样的。通常最好尽可能省略 this->
,除非您有本地编码风格指南/约定。
当你有一个隐藏成员变量的局部变量或参数时,这很重要。例如:
class Enemy {
public:
int health;
void setHealth(int health) {
// `health` is the parameter.
// `this->health` is the member variable.
this->health = health;
}
};
或者,可以通过在项目中使用命名约定来避免这种情况。例如:
- 始终在成员变量后缀
_
,如health_
- 始终在成员变量前加上
m_
,例如m_health