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;
    }
    
  • 相关阅读:
    pycharm基本设置
    pycharm破解
    jupyter
    gpu监控收藏
    监控收藏
    k8s 亲和性和反亲和性 以及污点和容忍
    通过服务器 远程管理卡进行装机
    7.11实习培训日志-Git Linux
    ## HashTable和HashMap的区别
    springboot2 -广播式WebSocket
  • 原文地址:https://www.cnblogs.com/OFSHK/p/13794830.html
Copyright © 2011-2022 走看看