C++中virtual function

来源:互联网 发布:淘宝内部优惠券哪里找 编辑:程序博客网 时间:2024/06/06 04:00

听了C++老师的课感觉说的真好,趁着记得。想到什么就写点什么啦。(ps:第一次要刷夜有点很激动O(∩_∩)O)

先说继承,很多现实世界语言中的is-a的关系其实并不能在编程设计中作为判定标准。具体的要满足里氏替换原则= =、就是子类有父类的各种属性,并且子类要实现所有父类的方法。不能不实现。

然后比如父类A中有一个非virtual function 的方法void f();然后子类B继承了子类A,并重写了f();然后A a = new B;然后b.f()则是调用A中的f()方法。若把f方法定义为virtual function。那就没有这个问题了,因为在这个过程中,编译器看到了子类继承了父类,然后在new 这个子类的时候会先使用动态绑定。然后就ok啦。

然后析构函数一版都是虚函数,因为一般子类的对象中的数据会比父类中多。所以啦,如果不是虚函数就是静态绑定,只能删除掉父类中的数据部分。然后不能完全释放内存空间。