手撕代码,函数重载和重写

#include <bits/stdc++.h>
using namespace std;

class animal {
public:
    // 纯虚函数
    // virtual void sound() = 0;

    // 虚函数
    virtual void sound() {
        cout << "animal sound" << endl;
    }
    void sound(string s) { //sound函数重载
        cout << s << endl;
    }
    void sound(string s1, string s2) { //sound函数重载
        cout << s1 << s2 << endl;
    }
};
class cat :public animal {
public:
    void sound() { // 重写虚函数
        cout << "cat sound" << endl;
    }
};

class dog :public animal {
public:
    void sound() { // 重写虚函数
        cout << "dog sound" << endl;
    }
};

int main()
{
    animal* animal1 = new cat();
    animal* animal2 = new dog();
    animal* animal3 = new animal();
    animal3->sound("重载1");
    animal3->sound("重载", "2");
    animal1->sound();
    animal2->sound();
    delete animal1;
    delete animal2;
    system("pause");

    return 0;
}

 

posted @ 2023-09-07 15:06  SuperTonyy  阅读(18)  评论(0)    收藏  举报