C++之类成员的访问权限详解(一)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++之类成员的访问权限详解(⼀)
概念解析
众所周知,⾯向对象编程语⾔的特征之⼀就是封装,不同编程语⾔对于封装提供的实现有所不同,但原理⼤体上是相同的。
C++提供了三种不同程度的访问权限来实现,主要是通过public 、private 、protected 三个关键字实现的。
下⾯我们来详细分析⼀下这三个关键字的具体作⽤和区别。
这三个关键字主要⽤来控制类或者结构体成员变量和成员函数的访问权限,称为成员访问限定符,分别代表公有的、受保护的、私有的,它们所表达的封装程度不同,在使⽤时需要特别注意。
访问权限限定符的使⽤⼜跟类本⾝的性质有关,即继承对访问权限的使⽤有⼀定的影响,本⽂主要探讨⽆继承情况下的访问。
public
限定符
被public 限定符所修饰的成员变量和函数可以被类的函数、⼦类的函数、友元函数,也可以由类的对象来访问,即可以使⽤成员运算符来访问。
这⾥的友元函数,可以是该类的友元函数,也可以是该类的友元类的成员函数。
使⽤形式如下:
12345678
class temp{ public: int a; //修饰成员变量 temp() //修饰成员函数,这⾥修饰构造函数 {
//初始化类对象成员
}
}
protected 限定符
protected 限定符修饰的成员变量和成员函数可以被该类的成员函数访问,但是不能被类对象所访问,即不能通过类对象的成员运算符来访问。
另外,这些成员可以被⼦类的函数和友元函数访问,相⽐public 成员 少了⼀个可以使⽤类对象直接访问的特性。
具体使⽤与public 类似,这⾥不再贴出代码。
private 限定符
被private 限定符修饰的成员变量只能被该类的⽅法和友元函数访问,⼦类函数⽆法访问,在这三个限定符中封装程度是最⾼的,⼀般来说,应该尽可能将类的成员变量声明为private ⽽不是其他,减少成员变量的暴露,只提供getter 和settter ⽅法给外界访问,这样能提⾼类的安全性。
具体使⽤与public
类似。
注意事项
C++与Java 不同,C++
中的类没有公有私有之分,在使⽤时直接声明即可,访问权限限定符只⽤于修饰类的成员变量和成员函数。
参考资料
《C++ Primer 》。