您的位置:首页 > 编程语言 > C语言/C++

C++中的public,protected, private

2011-06-07 12:09 661 查看
认为这篇文章总结的很好,特转发:

第一:private, public, protected 访问标号的访问范围。
private: 只能由1.该类中的函数、2.其友元函数访问。
不能被任何其他访问,该类的对象也不能访问。
protected: 可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。
但不能被该类的对象访问。
public: 可以被1.该类中的函数、 2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。
注: 友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。

第二:类的继承后方法属性变化。
private 属性不能够被继承。
使用private继承 , 父类的protected和public属性在子类中变为private;
使用protected继 承, 父类的 protected和public属性在子类中变为protected;
使用public继承, 父类中的protected和public属性不发生改变;

protected继承和private继承能降低访问权限。

关于私有继承的
第一个规则:和公有继承相反,如果两个类之间的继承关系为私有,编译器一般不会将派生类对象转换成基类对象。
第二个规则: 从私有基类继承而来的成员都成为了派生类的私有成员,即使它们在基类中是保护或公有成员。

私有继承的含义:私有继承意味着 "用...来实现"。
如果使类D私有继承于类B,这样做是因为你想利用类B中已经存在的某些代码,而不是因为类型B的对象和类型D的对象之间有什么概念上的关系。
因而,私有继承纯粹是一种实现技术。

私有继承意味着只是继承实现,接口会被忽略。如果D私有继承于B,就是说D 对象在实现中用到了B对象,仅此而已。
私有继承在软件 "设计" 过程中毫无意义,只是在软件 "实现" 时才有用。

今天在读《高质量程序设计》时还注意到了一个特殊地方,在拷贝赋值函数中对private变量的访问情况。参看文章:

http://blog.csdn.net/lin49940/archive/2010/06/02/5641152.aspx

我的理解是:在类的内部是可以访问private变量的,即便是定义了其它同类新的对象。毕竟this指针的使用也是在有对象建立后。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: