zoukankan      html  css  js  c++  java
  • C++

    动态多态需要满足的条件

    1. 有继承关系

    2. 子类要重写父类的虚函数(子函数重写的时候加不加virtual都可以)(加上virtual内存变为4个字节,指针的内存也是4个字节)

      重写:函数的返回值类型、函数名、形参列表中所有内容需要相同

      重载:函数名相同,参数不同

    动态多态使用

    父类的指针或引用指向子类对象

    例子

    #include<iostream>
    using namespace std;
    
    class Animal
    {
    public:
        virtual void speak() // + virtual = 虚函数
        {
            cout<<"动物在说话!"<<endl;
        }
    };
    
    class Cat:public Animal
    {
    public:
        void speak() //Animal下的sprak函数加上virtual 这边加不加都可以
        {
            cout<<"小猫在说话!"<<endl;
        }
    };
    
    void doSpeak(Animal &animal)
    {
        animal.speak(); //不加virtual 动物在说话!
    // 把Animal下的sprak函数加上virtual ,输出:小猫在说话!
    }
    
    void test1()
    {
        Cat cat;
    //    cat.speak(); // 小猫在说话!
        doSpeak(cat);
    }
    
    int main()
    {
        test1();
        return 0;
    }
    
  • 相关阅读:
    [CQOI2006]凸多边形
    NOIP后省选集训前文化课划水记
    FFT字符串匹配
    ghj1222的代码规范
    博弈论
    P1350 车的放置
    P2110 欢总喊楼记
    虫食算
    3192: [JLOI2013]删除物品
    逛公园
  • 原文地址:https://www.cnblogs.com/OFSHK/p/13794830.html
Copyright © 2011-2022 走看看