类里面有 public private protected 来控制访问的权限
我看到很多别人写的类都是用函数的方式来访问类里面的资源
例如:class A
{
public:
int GetData(){ return test; }
private:
int test;
};要获取test,就要通过GetData.
我就觉得有这个需要吗?  虽然这样条理比较清晰,但是这样比就更加麻烦了吗?
在效率上来说会更慢吗?不知道RELEASE版会不会展开

解决方案 »

  1.   

    test是私有的,你在类之外只能通过这个函数来间接访问,不能直接访问
      

  2.   

    如4楼所说的,那样因为你的成员变量test是私有的,所以类A外的其他类不能直接访问这个成员变量test.
    假设在类A设计了一个共有的成员函数,这个函数主要负责获取类A中相关似有成员变量。
    其他类就可以通过访问类A的这个成员函数。来得到原来不能直接访问得到的类A的成员变量了。另外这样做也是结构化程序的 规范
      

  3.   

    我的意思是,全部PUBLIC不就好了吗?
    那些函数都可以剩下来了
      

  4.   

    这是一个数据的封装,全部public肯定会有一定的风险的。
      

  5.   

    这种思想就是典型的有点极端的面向对象编程思想,象C#一样的这样处理,个人认为应该看情况,Get\Set的方法不一定就是必须,完全可以把数据成员设成public减低代码量和复杂性,应该灵活的应用面向对象和结构化编程的思想
      

  6.   

    使用Get/Set方法基于信息隐蔽的原则(如果不需要信息隐蔽,那么可以不使用类,使用带方法的结构类型),给外部访问类内部成员提供一个受控的接口,通常是必要的,尤其对于C++这种不支持PME模型的语言。对于支持PME模型的语言,象Delphi,Get/Set方法都可以隐藏起来,对使用者提供一个“属性”(Property)即可。
      

  7.   

    这个就是数据封装
    这么写还不够严谨呢
    正规的写法是class A 

    public:
         int GetData() const { return test; } 
    private:
         int test; 
    };因为这个代码你当时写完了,可能一个星期内都知道在这里我这个量是不能被改变的
    但是时间一长,你就记不清了,可能你就由于某种原因就去修改它了
    这里可能发生一种情况,就是这个test成员变量会导致其他变量发生改变
    这样的错误是不大容易发现的,所以为了安全起见,要把那些不会被修改的变量放到私有成员中