为了账号安全,请及时绑定邮箱和手机立即绑定
  • virtual的限制1

    查看全部
  • 虚析构函数

    查看全部
  • 静态动态(早绑定)与动态多态(晚绑定)

    查看全部
    0 采集 收起 来源:[C++]虚函数

    2018-04-23

  • 多态定义

    查看全部
    0 采集 收起 来源:[C++]虚函数

    2018-04-23

  • 纯虚函数

    查看全部
    0 采集 收起 来源:C++多态概述

    2018-04-23

  • 静态多态(早绑定):在运行前,编译阶段就已确定要调用哪个函数,很早就把函数编译进去。 动态多态(晚绑定):不同对象,下达相同指令,产生不同动作。前提:以封装与继承为基础。至少要两个类,父类与子类,用三个类时,动态多态表现地会更明显。

     实现多态的成员函数:用virtual修饰函数,使之成为虚函数。

    查看全部
    0 采集 收起 来源:[C++]虚函数

    2018-04-23

  • 多态是建立在封装和继承的基础上的,至少有2个类;

    查看全部
    0 采集 收起 来源:[C++]虚函数

    2018-04-23

  • 用父类的指针指向子类的对象,用父类的指针调用时调用的函数都是父类的计算面积函数

     使用virtual关键字修饰成员函数,使其成为虚函数,在想要实现多态的成员函数前加上关键字,在子类的定义中也加上关键字,不必须,会自动加上,但还是要写

    查看全部
    0 采集 收起 来源:[C++]虚函数

    2018-04-23

  • 虚函数表

     ——多态的核心 

    ——C++中实现多态的关键所在

    查看全部
    0 采集 收起 来源:C++多态概述

    2018-04-23

  • 多态就是不同对象对于同一条命令有不同的操作

    查看全部
    0 采集 收起 来源:C++多态概述

    2018-04-23

  • 使用RTTI时需要加上#include<typeinfo>头文件

    查看全部
    1 采集 收起 来源:巩固练习

    2018-04-19

  • 将多个类共有的特性抽象封装成一个纯虚函数,可以借由全局函数灵活控制调用的是父类子类中的共有函数。

    如【飞行能力类】是【飞机类】和【战斗机类】所共有的,既可以由【战斗机类】多重继承【飞机类】->【飞行能力类】,也可以【战斗机】多继承【飞机类】+【飞行能力类】。

    如果不把【飞行能力类】抽象成一个独立的类,那么【鸟类】将无法继承【飞行能力类】,得在函数体内重新定义一个【飞行能力类】。

    如果还有【苍蝇类】等诸多具有相同能力的类,那么类的声明与定义将变得繁琐和冗杂,不利于程序的编写和阅读。

    可以视为对人类世界抽象概念的具体化。比如【战斗】【飞行】【表演】【学习】【繁衍】等等。

    查看全部
  • #include <iostream>
    #include <stdlib.h>
    #include <string>
    using namespace std;
    
    /**
     * 定义动物类:Animal
     * 虚函数:eat()
     * 纯虚函数:move()
     * 数据成员:m_strName
     */
    class Animal
    {
    public:
        // 默认构造函数
        Animal(){};
        // 含参构造函数
    	Animal(string name){m_strName = name; cout << "Animal" << endl;}
        // 虚析构函数
    	virtual ~Animal(){cout << "~Animal" << endl;}
        // 虚成员函数
    	virtual void eat(){cout << "Animal--" << m_strName << "-- eat" << endl;}
        // 纯虚函数
    	virtual void move() = 0;
    public:
        // 数据成员
    	string m_strName;
    };
    
    /**
     * 定义狗类:Dog
     * 公有继承动物类
     * 虚成员函数:eat()、move()
     */
    class Dog : public Animal
    public:
        // 默认构造函数
        Dog(){};
        // 含参构造函数
    	Dog(string name){m_strName = name; cout << "Dog" << endl;}
        // 虚析构函数
    	virtual ~Dog(){cout << "~Dog" << endl;}
        // 虚成员函数eat()
    	virtual  void eat(){cout << "Dog--" << m_strName << " -- eat" << endl;}
        // 虚成员函数move()
    	virtual void move(){cout << "Dog--" << m_strName << " -- move" << endl;}
    public:
        // 数据成员
    	string m_strName;
    };
    
    int main(void)
    {
        // 通过动物类实例化狗类
        Animal *p=new Dog("狗类");
        // 调用成员函数
    	p->eat();
        p->move();
        // 释放内存
    	delete p;
    	p=NULL;
        
    	return 0;
    }

    跟答案 一样为什么运行不了?

    查看全部
    0 采集 收起 来源:单元练习

    2018-04-18

  • 注意函数的完整性

    查看全部
    0 采集 收起 来源:单元练习

    2018-04-17

  •  C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。

     这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。

     比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议

     数下,有virtual修饰=覆盖,无virtual=隐藏

    查看全部

举报

0/150
提交
取消
课程须知
本课程是C++初级课程 1、熟练掌握C++语言基础语法
老师告诉你能学到什么?
1、虚函数、虚析构函数、纯虚函数 2、抽象类和接口类 3、运行时类别异常 4、异常处理

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!