public protected private 用法小结
来源:互联网 发布:php fsockopen 开启 编辑:程序博客网 时间:2024/06/15 01:55
public protected private 用法小结
一、一般类的访问控制
public: 公有的的成员:该类的对象、类的成员函数、友元可以任意访问;声明为public的成员是类的接口部分。
protected: 保护的成员:类的成员函数、友元可以访问;
private: 私有的成员: 类的成员函数、友元可以访问;实现封装最好把所有数据成员定义为private。
二、类层次结构中的访问控制
派生类访问基类(用例子描述)
class X{//基类
public: int a;
}
class Y1 : public X{};
class Y2 : protected X{}; //Y2的成员函数、友元可以转换成基类访问基类
class Y3 : private X{}; //Y3的成员函数、友元可以转换成基类访问基类
void f1(Y1 *pY1, Y2 *pY2, Y3 *pY3)
{
X *pX = pY1; //OK,X是公用基类
pY1->a = 0; //OK
pX = pY2; //错误,X是保护基类
pY2->a = 1; //Error
pX = pY3; //错误,X是私有基类
pY3->a = 2; //Error
}
void Y2::f2(Y1 *pY1, Y2 *pY2, Y3 *pY3)
{
X *pX = pY1; //OK,X是公用基类
pY1->a = 0; //OK
pX = pY2; //OK
pY2->a = 1; //OK
pX = pY3; //错误,X是私有基类
pY3->a = 2; //Error
}
void Y2::f3(Y1 *pY1, Y2 *pY2, Y3 *pY3)
{
X *pX = pY1; //OK,X是公用基类
pY1->a = 0; //OK
pX = pY2; //错误,X是保护基类
pY2->a = 1; //Error
pX = pY3; //OK
pY3->a = 2; //OK
}
三、类层次结构中成员访问类型的变化
class X{//基类
public: int a;
protected: int b;
private: int c;
}
class Y1 : public X
{
void Debug()
{
a = 1; //public不变
b = 2; //protected不变
c = 3 //Error
}
};
class Y2 : protected X
{
void Debug()
{
a = 1; //变化成了protected
b = 2; //protected保持不变
c = 3 //Error
}
};
class Y3 : private X
{
void Debug()
{
a = 1; //变化成了private
b = 2; //变化成了private
c = 3 //Error
}
};
- public protected private 用法小结
- protected,public,private 小结
- C++中public,protected,private访问小结
- c++中private,public,protected小结
- C++中public,protected,private访问小结
- C++中public,protected,private访问小结
- C++中public,protected,private访问小结
- 小结,继承中的public、protected和private
- C++中public,protected,private访问小结
- C++中public,protected,private访问小结
- C++中public,protected,private访问小结
- C++中public,protected,private访问小结
- C++中public、protected及private用法
- C++中public、protected及private用法
- private protected internal public 关键字的用法
- C++中public、protected及private用法
- C++中public、protected及private用法
- C++中public、protected及private用法
- RUP2003到RUP7.0-嫁入豪门的第一次变身
- Linux下抓图
- 终级免杀之PcShare Vs KV2006
- 解析C语言中的sizeof
- 如何查看vc的sp版本?
- public protected private 用法小结
- 免杀必备-花指令
- 关于窗口重绘的初级问题
- 修改字段默认值的SQL语句怎么写?
- 扩充PE文件功能
- 由UpdateData(FALSE)想到的窗口刷新问题
- jsp 记录集为空 try块一定要close时的办法
- DIV中滚动条设置到随机位置(CSS+Javascript)
- 写给初学者:一个调试、利用msdn的经典例子