美文网首页
Effective c++ 学习笔记(item34)

Effective c++ 学习笔记(item34)

作者: 懒生活 | 来源:发表于2022-10-08 23:15 被阅读0次

    # 纯虚函数

    当你设计基类的时候,如果希望你的继承类一定要有某个函数,但是基类无法具体提供一个默认实现的时候。也就是继承类必须要有这个接口,但是不同继承类的该接口实现千差万别。此时你可以用上纯虚函数。类似如下`virtual void draw() = 0;`

    # 虚函数

    虚函数在基类的设计中的目的是,希望继承类即继承接口,也继承实现。但继承到的实现只是默认实现,你可以重写他。如果不重写,系统会调用默认实现。

    使用虚函数的时候,一定要注意去重写。如果不重写,而调用了默认的实现,有的时候可能会导致错误。

    如果你没有把握所有的继承类都可以默认使用这个接口的默认实现。最好的做法是,针对这个接口只提供纯虚接口。然后把大部分继承类适用的默认实现在基类中写成非虚函数。这样继承类继承了这个接口后,如果发现可以用默认实现,就会显式地去调用上述的非虚函数。 要注意的是这个非虚函数不能定义成private,如果定义成private在继承类中就无法调用了。

    # 非虚函数

    在基类的非虚函数表示所有的public继承类都是无条件继承的。是不允许在继承类中重定义的。否则就违反了public继承 is-a的原则,遗憾的是即使违反了,也不会报错。

    相关文章

      网友评论

          本文标题:Effective c++ 学习笔记(item34)

          本文链接:https://www.haomeiwen.com/subject/rzfwartx.html