使用Getters和Setter

时间:2014-07-02 21:20:38

标签: c++ oop

我对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;
}

0 个答案:

没有答案