09-封装

作者: ducktobey | 来源:发表于2019-11-10 23:23 被阅读0次

    封装

    成员变量私有化,提供公共的getter和setter给外界去访问成员变量

    例如以下一段代码

    struct Person {
        int m_age;
    };
    
    int main() {
        Person person;
        person.m_age = 10;
        getchar();
        return 0;
    }
    

    声明了一个Person类,然后就可以创建一个person对象,通过对象,可以直接访问person对象的成员变量。为什么可以直接访问,在前面章节[类与对象]也已经提到过,这样做其实是右问题的。因为如果成员变量公开的话,就无法阻止使用者不规范使用该类。比如使用者可以将年龄设置为负数person.m_age = -4,这样对m_age赋值明显是不合理的,因为年龄不可能为负数,所以为了过滤掉不合理的值,一般将成员变量私有化,不允许外界直接赋值

    为了方便外界对成员变量赋值,因此在创建类时,需要提供公共的方法,供外界setter方法设置成员变量值与getter获取成员变量值值,在setter里面,可以过滤掉外面传进来的不合理的值,在getter里面,可以获取成员变量的值,类似于这样的操作,如果你有过面向对象的开发经验,一定不会陌生

    struct Person {
    private:
        int m_age;
    public:
        void setAge(int age) {
            if (age <= 0) {
                return;
            }
            m_age = age;
        }
    
        int getAge() {
            return m_age;
        }
    };
    
    int main() {
        Person person;
        person.setAge(10);
        int age = person.getAge();
        getchar();
        return 0;
    }
    

    这就是面向对象中,针对封装的简单介绍。

    demo下载地址

    文章完。

    相关文章

      网友评论

          本文标题:09-封装

          本文链接:https://www.haomeiwen.com/subject/fbrzbctx.html