zoukankan      html  css  js  c++  java
  • 谈谈父类和子类的隔离性

    以前写代码知道要给类外设置访问接口, 例如下例:

     1 class Money
     2 {
     3 public:
     4       Money(int money) : m_curValue(money){}
     5       
     6       void store(int money) { m_curValue += money;}
     7       void spent(int money){ m_curValue -= money;}
     8 private:
     9    int m_curValue; 
    10 };
    11 
    12 int main(int argc, char** argv)
    13 {
    14     Money myMoney(100);
    15     myMoney.store(100);    //通过Money类的访问接口开存取钱, 而不能直接操作前
    16     myMoney.spent(50);
    17     return 0;
    18 }

    但是呢,从未关注过父类和子类也要通过接口沟通.

    书上的话:
    //
    派生类可以直接访问基类的包含数据成员,甚至在构造时初始化它们,但是一般不这么做,而是通过基类的接口(成员函数)去访问它们,初始化也是通过基类的构造函数.
    //这样做的好处是,一旦基类的实现有错误,只有不涉及接口,那么基类的修改不会影响派生类的操作.
    //类和类直接,你做你的,我做我的,以接口作沟通.即使基类和派生类也不类外.这正是类能够发挥其生命力的原因所在

    例如:

     1 class Father
     2 {
     3 public:
     4     Father(string firstNm, string SecondNm = "大毛") : m_firstNm(firstNm), m_secondNm(secondNm)
     5     {
     6      }
     7     
     8     string getFistName(){return m_firstNm;}
     9 
    10 protected:
    11    string m_firstNm;
    12 private:
    13    string m_secondNm;
    14 };    
    15 
    16 class Son : public Father
    17 {
    18 public:
    19      Son(string FirstNm, string SecondNm) : Father(FirstNm), m_secondName(SecondNm)
    20      {
    21      }
    22 //下面的函数直接使用了基类的包含成员的函数 是不好的风格
    23      bool isFirstName(string givenNm)
    24       {
    25              return m_firstNum == givenNm ? true : false;
    26       }
    27 //下面的函数通过接口使用,才算是比较好的风格
    28      bool isFirstName(string givenNm)
    29       {
    30              return getFirstName() == givenNm ? true : false;
    31       }
    32 private:
    33     string m_secondName;
    34 };

    恩.书上的话应该就是上面的代码的也是吧.以后得多多注意啊,然后在无意识中绕过一些坑,别踩进去

  • 相关阅读:
    制作yaffs2文件系统
    nandwrite 参数
    linux并发控制之信号量
    mke2fs 制作ext2文件系统image
    stat文件状态信息结构体
    mount命令详解
    fiddler——http——cookie
    fiddler——http——请求方法、状态码
    http的cookie
    fiddler——http——header首部(请求首部和响应首部)——个人文档整理
  • 原文地址:https://www.cnblogs.com/silentNight/p/5559152.html
Copyright © 2011-2022 走看看