我对C ++和面向对象编程非常陌生。我试图围绕类和访问器(getter和setter)进行包装。
说我有班级Person
。它没有什么太重要,它只存储一个人的名字和HP。名称是一个字符串,HP是一个整数。我已经知道将这两个变量都保留在公共访问说明符中是非常愚蠢的,所以我会将名称和HP保留在私有访问说明符中。我知道我可以在第一次创建对象实例时使用构造函数来设置变量,但是像HP这样的东西必须不断更新......
带来了getter和setter的概念。
通过使用公共getter和setter函数,我可以更改Person对象的HP。然而,这会导致封装的破坏,这是没有人想要的。
我知道在某些情况下,C ++中的getter可能是强制性的,但有没有替代setter?感谢。
顺便说一下,这里有一些代码显示了我一直试图展示的内容......#include <string>
using namespace std;
class Person {
public:
Person(string setName, int setHp) {
setName = name;
setHp = hp;
}
int getHP() {
return hp;
void setHP(int hpSet) {
hp = hpSet
}
private:
string name;
int hp;
}
int main() {
Person guy("Mark", "100");
// Say Mark here was attacked or something... his HP would go down...
guy.setHP(75);
return 0;
}