c++派生类 纯虚函数

基类pet包含一个纯虚函数speak(),由pet类分别派生出Cat类和Dog 类。Cat类扩展数据成员名字(字符串),成员函数speak函数输出“喵”,Dog类扩展数据成员名字(字符串),成员函数speak函数输出“汪”
参考主函数:

       int main()

        {

        string name;

        cin >> name;

        Cat cc(name);

        cin >> name;

        Dog dd(name);

        Pet* pp;

        pp = &cc;

        pp->speak();

        pp = ⅆ

        pp->speak();

        return 0;

        }

【样例输入】

小猫

小狗

【样例输出】

小猫:喵

小狗:汪

稍等

img

#include <iostream>
#include <string>
using namespace std;

class Pet {
public:
    virtual ~Pet() {}
    virtual void speak() = 0;
};

class Cat : public Pet {
private:
    string name;
public:
    Cat(string _name) : name(_name) {}
    void speak() {
        cout << name << ": 喵" << endl;
    }
};

class Dog : public Pet {
private:
    string name;
public:
    Dog(string _name) : name(_name) {}
    void speak() {
        cout << name << ": 汪" << endl;
    }
};

int main() {
    string name;
    cin >> name;
    Cat cc(name);
    cin >> name;
    Dog dd(name);
    Pet* pp;
    pp = &cc;
    pp->speak();
    pp = &dd;
    pp->speak();
    return 0;
}


要写出类呗?

#include <iostream>
using namespace std;
#include <string>
class Pet
{
public:
    virtual void speak() = 0;
};
class Cat : public Pet
{
    private:
        string name;
    public:
        virtual void speak() {cout<<name<<":喵"<<endl;}
        Cat(string n) : name(n) {}
};
class Dog : public Pet
{
    private:
        string name;
    public:
        virtual void speak() {cout<<name<<":汪"<<endl;}
        Dog(string n) : name(n) {}
};
 int main()
{
string name;
cin >> name;
Cat cc(name);
cin >> name;
Dog dd(name);
Pet* pp;
pp = &cc;
pp->speak();
pp = &dd;
pp->speak();
return 0;
}