冷眸°Perpetual 发表于 2022-3-6 10:05:34

小甲鱼C++快速入门课程里面 虚方法那一节

#include <iostream>
#include <string>
using namespace std;
class Pet{
        public:
                Pet(string theName);
                void eat();
                void sleep();
                void play();
        protected:
                string name;
};

class Cat: public Pet{
        public :
                Cat(string theName);
                void climb();
                void play();
       
};

class Dog : public Pet{
        public :
        Dog(string theName);
        void bark();
        void play();
};

Pet::Pet(string theName){
        name =theName;
}

void Pet::eat(){
        cout<<name<<"正在吃东西"<<endl;
       
}
void Pet::sleep(){
        cout<<name<<"正在睡大觉"<<endl;
       
}

void Pet::play(){
        cout<<name<<"正在玩呢\n"<<endl;
}
Cat::Cat(string theName) : Pet(theName){
}
void Cat::climb(){
        cout<<name<<"正在爬树"<<endl;
       
}
void Cat::play(){
        cout<<name<<"玩毛线球"<<endl;
}
Dog::Dog(string theName) : Pet(theName){
}
void Dog::bark(){
        Pet::play();               //小甲鱼弄这个函数没看懂,但是我觉得没有必要写这个 所以我注释了
        cout<<name<<"旺旺"<<endl;
       
}
void Dog::play(){
        Pet::play();               //小甲鱼弄这个函数没看懂,但是我觉得没有必要写这个 所以我注释了
        cout<<name<<"正在追猫"<<endl;
       
}
int main(){
        Pet *cat =new Cat("加菲");          //这里我改成了Cat*cat =new Cat("加菲");
        Pet *dog =new Dog("欧迪");          //这里我改成了Dog*cat =new Dog("欧迪");
       
        cat->sleep();
        cat-> eat();
        cat->play();
       
        dog->sleep();
        dog-> eat();
        dog->play();
       
        delete cat;
        delete dog;
       
        return 0;
}


我的这种写法是否有什么问题??

冷眸°Perpetual 发表于 2022-3-6 10:16:59

就是主函数里面,直接使用子类声明子类实例不就不用使用虚方法了吗

Enderman141 发表于 2024-7-10 20:20:54

冷眸°Perpetual 发表于 2022-3-6 10:16
就是主函数里面,直接使用子类声明子类实例不就不用使用虚方法了吗

母鸡啊,那就可以这样吧
页: [1]
查看完整版本: 小甲鱼C++快速入门课程里面 虚方法那一节