关于C++类成员访问权限的理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C++类成员访问权限的理解相关的知识,希望对你有一定的参考价值。

这是我的第一篇博客耶,翻书的时候想到关于类和对象的几个疑惑,记一记吧。

 

一直的一个问题就是,为什么要提供访问限制?上网查了一些资料,感觉private主要是一种思想的体现。足够小心谨慎是可以全部public的。

访问权限强调了面向对象的封装思想,拒绝权限外的访问,增强了代码的可维护性,不会别人随便改啊改,修改了暴露的不该动的东西。

 

怎么算是类内外的访问??在外面访问成员方法还可以理解,怎么访问变量?(哦原来就是下面的printf那句)

 

一个成员的访问权限怎么体现呢?

一个成员变量,怎么算是私有的访问??

class CUser {
private:
    char m_PassWord[16];
};
     CUser user;
printf(
"%s", user.m_PassWord);//非法的访问

class CUser {
private:
    char m_PassWord[16];
public:
    void ChangePassWord(char* newPassWord) {
        if (newPassWord != NULL) {
            strcpy(m_PassWord, newPassWord);//合法的访问
        }
    }
};

私有成员变量将本类之外的一些牛鬼蛇神拒之门外。

同样,对于私有成员方法,来自外部的调用是不合法的。

class CUser {
private:
    char m_PassWord[16];
    char* GetPassWord() {
        return m_PassWord;
    }
};
    CUser user;
    printf("%s",user.GetPassWord());//非法的访问

但是它可以作为一个public函数的调用:

class CUser {
private:
    char m_PassWord[16];
    char* GetPassWord() {
        return m_PassWord;
    }
public:
    void PrintPassWord() {
        printf("%s", GetPassWord());//合法的访问
    }
};

 我会加油写出更厉害的博客的!

以上是关于关于C++类成员访问权限的理解的主要内容,如果未能解决你的问题,请参考以下文章

C++ 中对于访问权限publicprivateprotected的理解

C++类成员的访问权限以及类的封装

关于C++静态成员函数访问非静态成员变量的问题

C++学习(四五一)public protected private权限和继承方式

Scala中包类对象成员访问权限理解

C++类基础部分详解