C++多态及继承访问关系示例

多态:允许将派生类指针赋值给基类指针
继承:派生类拥有父类的数据成员和成员函数

示例:

.h文件:

class Base {
public:
    void A1();           //非虚函数,派生类有重写
    void A2();           //非虚函数,派生类无重写
    virtual void B1();   //虚函数,派生类有重写
    virtual void B2();   //虚函数,派生类无重写
    virtual void C() = 0;  //纯虚函数
};

class ChildFirst:public Base{
public:
    void A1();
    void B1(); 
    void C(); 
    void D();  //派生类自己的成员函数
};

.cpp文件中定义打印信息
main函数中调用:

 //Base b = new Base();  //错误 抽象类不能创建自己的对象,必须使用多态
    Base* b = new ChildFirst();  //派生类初始化基类
    b->A1();  //Base A1
    b->A2();  //Base A2
    b->B1();  //ChildFirst::B1
    b->B2();  //Base B2
    b->C();  //ChildFirst::C
    //b->D();  //Base B2  //错误使用,必须是基类中有的成员函数
    cout << "-------";
    ChildFirst* C =new  ChildFirst();
    C->A1(); //ChildFirst::A1
    C->A2(); //Base A2
    C->B1(); //ChildFirst::B1
    C->B2(); //Base B2
    C->C();  //ChildFirst::C

在这里插入图片描述

总结:
1.使用派生类初始化基类对象,只能调用基类中有的成员函数,如果想要调用派生类的成员函数,则需要通过接口获得派生类对象
2.如果非虚函数,那么无多态的性质,只是继承的性质,使用派生类初始化的基类对象,调用派生类自己的成员函数
3.如果为虚函数,就具有多态性质,若派生类有重写,则调用派生类成员函数;若派生类无重写,则调用基类成员函数
4.纯虚函数一定在派生类重写
5.使用自己的类创建自己的对象,把virtual当成普通函数即可,只剩下继承性没有多态性

相关推荐

  1. C++入门篇----封装,继承

    2024-03-11 03:22:01       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 03:22:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 03:22:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 03:22:01       82 阅读
  4. Python语言-面向对象

    2024-03-11 03:22:01       91 阅读

热门阅读

  1. 鸿蒙os开发做全局路由拦截

    2024-03-11 03:22:01       69 阅读
  2. WPF自定义快捷命令

    2024-03-11 03:22:01       48 阅读
  3. web蓝桥杯真题:冰墩墩心情刻度尺

    2024-03-11 03:22:01       52 阅读
  4. 【c++】模板的使用

    2024-03-11 03:22:01       47 阅读
  5. 设计模式 | 单例模式 | 懒汉&饿汉

    2024-03-11 03:22:01       43 阅读
  6. python的类修饰器

    2024-03-11 03:22:01       50 阅读