众所周知,面向对象编程语言的特征之一就是封装,不一样编程语言对于封装提供的实现有所不一样,但原理大致上是相同的。C++提供了三种不一样程度的访问权限来实现,主要是经过public、private、protected三个关键字实现的。下面咱们来详细分析一下这三个关键字的具体做用和区别。html
这三个关键字主要用来控制类或者结构体成员变量和成员函数的访问权限,称为成员访问限定符,分别表明公有的、受保护的、私有的,它们所表达的封装程度不一样,在使用时须要特别注意。编程
访问权限限定符的使用又跟类自己的性质有关,即继承对访问权限的使用有必定的影响,本文主要探讨无继承状况下的访问。安全
被public限定符所修饰的成员变量和函数能够被类的函数、子类的函数、友元函数,也能够由类的对象来访问,便可以使用成员运算符来访问。这里的友元函数,能够是该类的友元函数,也能够是该类的友元类的成员函数。使用形式以下:编程语言
class temp{
public:
int a; //修饰成员变量
temp() //修饰成员函数,这里修饰构造函数
{
//初始化类对象成员
}
}
protected限定符修饰的成员变量和成员函数能够被该类的成员函数访问,可是不能被类对象所访问,即不能经过类对象的成员运算符来访问。另外,这些成员能够被子类的函数和友元函数访问,相比public成员 少了一个可使用类对象直接访问的特性。具体使用与public相似,这里再也不贴出代码。函数
被private限定符修饰的成员变量只能被该类的方法和友元函数访问,子类函数没法访问,在这三个限定符中封装程度是最高的,通常来讲,应该尽量将类的成员变量声明为private而不是其余,减小成员变量的暴露,只提供getter和settter方法给外界访问,这样能提升类的安全性。具体使用与public相似。spa
C++与Java不一样,C++中的类没有公有私有之分,在使用时直接声明便可,访问权限限定符只用于修饰类的成员变量和成员函数。.net
《C++ Primer》htm
https://www.cnblogs.com/dongsheng/p/3344011.html对象
https://blog.csdn.net/zxf529/article/details/1746728blog