zoukankan      html  css  js  c++  java
  • Protected Functions 是理解OO的难点和关键

    Protected Functions 是理解OO的难点和关键


    private和public函数都好理解,这里就不多说了,夹在中间的prortected却有许多精妙之处,说说我的几个疑问和看法:
    1. 通常用于子类扩展父类的功能的时候用,即类库程序员可以,但客户程序员不得使用。所以程序员一旦偷懒,不写子类而想直接使用保护函数,那是不行的。比如要给QLabel加上Click功能,明明有现成的mouseReleaseEvent的函数就可以实现点击效果,但客户程序员就是无法使用,不得不写一个QLabel的子类来实现,代码其实很简单:
    http://qt-project.org/wiki/Make-a-QLabel-Clickable

    2. 父类的protected函数,在子类中重新声明为public,或者private分别会有什么效果?孙类还能继承吗?
    如果这个protected函数的可见性被改变后,它的overload函数会有什么下场?

    3. 写一个继承类,另写一个public函数,用它包装一下这个保护函数,然后客户程序员也就可达到相同的效果。这样可以不改变它的孙类对祖父类的继承和理解。

    结论:
    1. Protected函数不适用于懒人,但可适用于勤快的程序员
    2. Protected函数改变了它的Overload函数(指C++),并且影响孙类
    3. Protected函数可经过子类再次包装后使用,对整个类体系毫不影响

    如果想仔细揣摩保护函数的意义,可以看看QWidget定义的37个保护函数,另有9个保护函数继承于QObject,1个保护函数继承于QPaintDevice,鉴于QWidget对各种不同平台的强大适应性,应该可以足够理解保护函数的作用了:

    http://doc.qt.io/qt-5/qwidget.html

  • 相关阅读:
    HDU 5791 Two (DP)
    POJ 1088 滑雪 (DPor记忆化搜索)
    LightOJ 1011
    POJ 1787 Charlie's Change (多重背包 带结果组成)
    HDU 5550 Game Rooms (ccpc2015 K)(dp)
    HDU 5542 The Battle of Chibi (ccpc 南阳 C)(DP 树状数组 离散化)
    HDU 5543 Pick The Sticks (01背包)
    HDU 5546 Ancient Go (ccpc2015南阳G)
    NB-IoT的DRX、eDRX、PSM三个模式 (转载,描述的简单易懂)
    MQTT 嵌入式端通讯协议解析(转)
  • 原文地址:https://www.cnblogs.com/findumars/p/4324358.html
Copyright © 2011-2022 走看看