Effective C++读书笔记(34)

来源:互联网 发布:云数据库怎么用 编辑:程序博客网 时间:2024/06/06 01:50

条款34:区分接口继承和实现继承

在对Base class 进行public继承的时候,根据Base class中成员函数的类型我们能够得到不同的继承方式:如下:

class Shape{public:virtual void draw() const = 0;virtual void error(const std::string& msg);int objectId() const;};class Rectangle:public Shap{...};

在上面的类Shap中,成员函数draw是pure的,因此class 是抽象基类,也就不能有Shap类型的对象,此时draw提供的只

是一个函数的接口,在Rectangle类中必须要对这个接口进行实现,这个是接口的继承,当然在Shap基类中,pure virtual函数也

可以有默认的实现方式,这样我们在其子类Rectangle中就可以使用默认的基类纯虚函数,此时我们必须要显示的进行调用。

对于error的函数,是普通的virtual函数,他对其子类提供的是接口和默认实现的继承,此时如果子类中没有显示的定义一

个则将会使用父类中申明的成员函数。

在objectId成员函数中,我们定义的是普通的成员函数,对于public继承的体系来说我们不应该在子类中对该成员函数进

行重定义,因为这会覆盖掉父类函数的定义!


请记住:

  • 接口继承和实现继承不同,在public继承下,derived classes总是继承base class的接口
  • pure virtual函数只是具体的指定接口继承
  • 普通的virutal 函数具体制定接口继承以及缺省的实现继承
  • non-virtual函数具体制定接口继承以及强制性实现继承



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买了一批化肥没有执行标准怎么办 防护栏下面打不了膨胀螺丝怎么办 不知道怀孕照了x射线怎么办 腹部照了x光片照了三次怎么办 像在工厂戴的静电帽弄丢了怎么办 诈骗犯把钱被转到别人账户怎么办 狗狗5个月在家随地大小便怎么办 上课放屁放的快没憋到老是放怎么办 丈夫有外遇并跟小三有一儿子怎么办 借款夫妻双亡借出去的钱怎么办? 橡胶底的劳保鞋开胶了怎么办? 求部队停止有偿服务内部超市怎么办 晋江买了全本还是有防盗章节怎么办 宝宝没有穿衣服的地方长疙瘩怎么办 詹姆斯士兵12魔术贴老是掉怎么办 手机版本不支持陌陌视频聊天怎么办 私人单位不给员工写收入证明怎么办 cad图形缩小后找不到图了怎么办 离婚了老婆嫁给了别人怎么办 对方开车撞伤人逃逸不赔钱怎么办 帮老板开车撞伤人老板不愿赔怎么办 我开车撞人现在伤者住院怎么办 B照驾驶证扣3分怎么办l 驾驶证被盗后被别人拿去消分怎么办 碰瓷的手碰我后视镜怎么办 摩托被盗监控录像器没有记录怎么办 车贷逾期车被贷款公司拖走了怎么办 发现邻居家小孩偷了我的钱该怎么办 孕晚期挺着大肚子好累怎么办 古墓丽影崛起东西满了怎么办 塞尔达传说大师剑耐久没了怎么办 冒险岛遇见超能力者全屏挂机怎么办 当危险来临时该怎么办作文400字 生气把孩子手掌内侧打肿了怎么办 驾驶证未满一年扣12分怎么办 在高速上超速百分之10以下怎么办 中兴手机重启死机开不了机怎么办 太胖了太自卑了该怎么办 儿子因为长的胖特别自卑怎么办? 苹果ld叫我检查身份信息怎么办 我家墙让对面给漂水了怎么办