杰 & C++ & Python & DM

C++是类层次保护的

 

class CStack
{
public:
       CStack();  
       CStack(
int  size); 
       CStack(
const CStack& st);   //复制构造函数,注意使用引用
private:    
       
int _size;
       
int _count;
       
int* _s;           
}
;
CStack::CStack(
const CStack& st)
{
      _size
=st._size;
      
if(_size > 0)
      
{
               _s 
= new int[_size];
               _count 
= st._count;                  //访问st的私有数据
               for(int i=0; i<_count; ++i)
                       _s[i] 
= st._s[i];             
      }
         
      
else
      
{
          _s 
=  0;
          _count 
= 0;           
      }
                                            
}

      在C++模型中,保护是在类层次应用的,而不是在对象层次。
      这句话的意思是,类的任意一个对象可以访问该类的另一个对象的内部的任何东西。在上面的例子中,复制构造函数中的赋值语句_size = st._size;访问了st的私有数据。
      这说明,C++中的访问保护是按照层次的原则定义的,那么什么事对象层次的保护呢?
      在Smalltalk中,成员函数可以当前对象的私有数据,但不能访问任何其它对象的私有数据,即使它们属于相同的类。

posted on 2009-04-29 17:57 jaysoon 阅读(282) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

收藏夹

C++

搜索

最新评论

阅读排行榜

评论排行榜