C++中的public,protected, private
来源:互联网 发布:js中simpledateformat 编辑:程序博客网 时间:2024/05/15 23:44
认为这篇文章总结的很好,特转发:
第一: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指针的使用也是在有对象建立后。
- C++-public,protected,private
- 【C++】public protected private
- C++private,protected,public。
- Java中的private、public、protected
- C++中的public,protected, private
- C++中的public private protected
- C++中的 public protected private
- C++中的public、private、protected
- C++中的private/protected/public
- 继承中的public,protected,private
- c++中的private,public,protected
- java中的private public protected
- PHP中的private、protected、public
- C#---public-private-protected-internal
- objective-c @private @protected @public
- C#public/protected/private/internal/protected internal
- Java中的public、 protected、 default、 private
- 关于C++中的public,protected, private
- hdu1254 推箱子
- android 判断应用程序是否为系统应用程序
- Open Source iPhone Apps List – Real App Store Code Examples!
- 金蝶EAS7 财务会计【总帐】模块实施摘要!
- 测试驱动开发(TDD)(转载)
- C++中的public,protected, private
- setsockopt 设置socket 详细用法
- Python Qt4 Ubuntu 环境搭建
- 隐藏进程(在任务管理器中看不到),vc6.0
- VC++中进程间相互通信的十一种方法
- window中进程间如何通信vc++技术 (共享内存)
- SQL2005转SQL2000
- OIV读取*.iv文件
- AStar(A*)启发式寻路 - flamesengine