(栗子:private,public,protected)
即为在类中那些成员可以被别人访问,哪些只能由自己访问。
to keep the client programmer’s hands off members they shouldn’t touch
to allow the library designer to change the internal workings of structure without worrying about how it will affect the client programmer
1.public
任何人都可以访问
2.private
仅有class下的成员函数可以访问class中的variables或者function(main主函数也不可以,仅在一个class中,而不是.cpp中)
同一个class中不同的的成员函数之间是可以彼此访问彼此变量的
仅在编译时刻提醒你有没有访问别人私有的东西。
attention:C++的OOP特性仅在源代码下,编译过后就不是OOP的东西啦
3.protected
只有这个类自己或者它的子类以及再子类(子子孙孙,无穷无尽。。。)
它的用法是declare别人是你的friend,从而访问你私有的东西,这个别人可以是class,function,class中的function。
但你不可以声明你是别人的friend来访问别人私有的东西,这样就太犯规啦!
(就好像我说你是我的好朋友,我女朋友就是你女朋友,但我不可以说你是我的好朋友,所以你女朋友就是我女朋友,这样就合理多啦(憨憨笑))
栗子:
struct X;//这里是一个前向声明,是一个不完整的类的定义,仅仅为了后面的编译能够通过
struct Y{
void f(X*);} //Y中的X便对X有访问权限
struct X{ //definition:从这里开始定义我们的struct X也不迟
private:
int i;
public:
void initialize();
friend void g(X*,int); //global friend
friend void Y::(X*); //struct member friend
friend struct Z; //entire stuct is a friend
friend void h();
};
tips:
1.某些operator的重载是要以friend授权的
2.一个类已经写好了就无法再对其friend了
3.friend的授权是在编译中处理的
如果,你在类里面有没有声明访问属性的地方**,struct对未声明的地方全部为public。**除非你的类特别简单,否则我们一般首选class。
Linux安装及管理程序 一.Linux应用程序基础 1应用程序与系统命令的关系 2典型应...
文章目录 一、合并两个 Element[] dexElements 二、 完整修复包加载工具类 三、 ...
精致的高性能的下拉刷新上拉加载组件 mescroll --【wxs+renderjs实现】高性能的...
近日,Linus Torvalds 发布了 Linux 内核的 5.10 版本,并为下一个版本 5.11 设...
我们知道Windows 10X是微软全新打造的Windows系统,尽管它已经跳票到了2021年,...
sublime / vscode 快捷生成HTML代码的实现 文章目录 sublime / vscode 快捷生成H...
“这个浪费是巨大的和可怕的”Bittorrent 创始人 Bram Cohen 在接受采访时说道他...
如今每一个使用servlets的开发者都知道JSP,一种由Sun公司发明并花费大量精力加...
本文实例讲述了php设计模式之正面模式。分享给大家供大家参考,具体如下: 星际...
为什么需要封装echarts 每个开发者在制作图表时都需要从头到尾书写一遍完整的opt...