2019-07-20--继承,多态

类型决定调用,virtual开启多态,是对象决定成员的调用

1.父类指针指向子类堆上的对象
2.delete 父类指针
3由1,2会导致子类析构调用不成,所以解决此问题的方法就是将基类析构函数改成虚函数
这时候就不得不提构造函数一定不能是虚函数

  • 原则:一个类或者他的父类存在被继承和虚函数,那么必须定义虚析构函数
  • const 函数可被const和非const成员调用,而非const函数只能被非const成员调用
#include <iostream>

using namespace std;

class A{
public:
    A(){
        cout << "A construct"<< endl;
    }
    virtual ~A(){
        cout << "A destruct"<< endl;
    }
    virtual void Func()const {
        cout << "A::Func"<< endl;
    }
    void Func(int n)const {
        cout << "A::Func () "<< endl;
    }
    
};
class B:public A{
public:
    B(){
        cout << "B construct"<< endl;
    }
    ~B(){
        cout << "B destruct"<< endl;
    }
    void Func()const {
        cout << "B::Func"<< endl;
        A::Func();
    }
    
};
int main(){
//  B b;
//  b.Func();
    
    //A* a = &b;
    //a->Func();
    A* a = new B;
    a->Func();
    delete a;
    a = NULL;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 继承和多态 1. 继承的优缺点 优点:(1)子类可以灵活地改变父类中的已有方法;(2)能够最大限度的实现代码重用。...
    MinoyJet阅读 666评论 0 0
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 5,051评论 0 14
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,541评论 1 51
  • 文/路小山 昨天在日更挑战微信群,抛出了一个有趣的论题:假如有人很认真的对你说,我要离开地球,我要到火星上去,你会...
    路小山阅读 10,964评论 6 8
  • 有句话说:注意力在哪里,能量就在哪里? 只要是真心想做的事,你总会有时间去做完它,这是种选择。正如午饭后我想优先静...
    馨晴的能量小站阅读 398评论 1 2