浅谈C++类中的公有和私有

  最忌讳的就是利用C++写C代码!利用C++写C代码最主要的一个特点之一把类里面所有的数据都声明成public的,本文就浅谈了一下如何利用public和private将代码分开的方法~~~
#define:
  1.关键字public可以将类的成员说明为是公有的,及可以被该类的所有成员所访问;
  2.关键字private可以将类的成员说明为是私有的,它不能直接被对象访问。
 
  其实,说白了就是对于公有成员,我们可以利用对象来进行直接调用,比如说:
class Cat
{
    public:
    int weight;    
};

int main()
{
    Cat cat;//声明一个对象
   cat.weight=5;
    cout<<"The cat's weight is "<<cat.weight<<endl;
    return 0;
}
  在上面这个程序中,由于Cat类中的成员函数weight被声明成了公有成员,那么我们就可以在主窗口中首先创建一个Cat类的对象(cat),并利用.运算符就可以直接调用weight这个数据成员了。
  但是,值得注意的是,如果我们想要把上面程序中的public删除掉,改成private。那么这个时候,我们就无法在由Cat类所声明的对象中调用这个weight成员。这是,只有通过在类中设置一个公共的接口函数,才能实现对weight的访问,如下例:
class Cat
{
   public:
   void setWeight(int w){weight=w;}//设置重量
   int print(){return weight;}//返回重量的大小
  
  private:
   int weight;   
};

int main()
{
    Cat cat;
    cat.setWeight(5);//设置cat的重量为5
    cout<<"The cat's weight is "<<cat.print()<<endl;
    return 0; 
}
  通过这种方式,利用类中的公共接口函数,我们就可以访问调用类的私有成员。那么这样做的好处是什么呢?
好处就是:提高代码的安全性,防止造成错误的输入与输出。因为在类的公共接口函数中,我们可以对输入的具体值进行限定,那么这样就不会造成数据的错误。比如说下例:
class Cat
{
   public:
   void setWeight(int w)
  {
      if(w>0&&w<50)//这里,我们就可以通过一条简单的if语句启动控制作用
         weight=w;
   }//设置重量
   int print(){return weight;}//返回重量的大小
  
  private:
   int weight;   
};
 
==================================总结========================================
  在一般情况下,我们可以将类的数据成员设置为私有的,然后调用类中的公共该接口函数来访问他们。这样做的好处是将数据的赋值与读取分开操作。比如说上例里面,我们就将数据的赋值函数设置成setWeight(int),将数据的读取函数设置成print()。这样的好处就是赋值函数不需要考虑读取函数是如何工作的,读取函数中的代码改变也不会影响到相应的赋值函数。那么这样就提高了代码的可重用性。另外,由于将数据成员进行了私有化,那么各个对象不可以直接访问并修改数据。比如说上例中想要直接修改weight的数值就是不合法的,只有通过公共的接口函数才能访问并且修改到类里面的私有数据成员(weight)。
  这样的设置时程序更容易维护,并且可避免一些不应有的错误。
posted @ 2011-07-11 16:24  uniqueliu  阅读(20896)  评论(6编辑  收藏  举报