c++多态的问题,纯虚函数的重写

为什么我调用了子类的makedrink方法后,重写的boil,brew,input,putsth方法里面的内容没有输出?我的编译环境是vscode
输出结果如下:

making drink
making drink
[1] + Done

源代码


#include<iostream>
using namespace std;
class makedrink
{
    public:
    virtual void boil()=0;
    virtual void brew()=0;
    virtual void input()=0;
    virtual void putsth()=0;
    void mkprecedure(){
        cout<<"making drink"<<endl;
        void boil();
        void brew();
        void input();
        void putsth();
    }
};
class coffe:public makedrink
{
    public:
    virtual void boil(){
        cout<<"boiling water"<<endl;
    }
    virtual void brew(){
        cout<<"brewing coffe"<<endl;
    }
    virtual void input(){
        cout<<"put into a cup"<<endl;
    }
    virtual void putsth(){
        cout<<"putsht into the drink"<<endl;
    }
};
class tea:public makedrink
{
    public:
     virtual void boil(){
        cout<<"boiling water"<<endl;
    }
    virtual void brew(){
        cout<<"brewing tea"<<endl;
    }
    virtual void input(){
        cout<<"put into a cup"<<endl;
    }
    virtual void putsth(){
        cout<<"putsht into the drink"<<endl;
    }
};
void function1(makedrink* drink){
    drink->mkprecedure();
    delete drink;
}
void test(){
    function1(new coffe);
    function1(new tea);
}
int main(){
    test();
    return 0;
}

mkprecedure函数改成如下,你加上void变成声明了,应该是调用才对:


  void mkprecedure() {
        cout << "making drink" << endl;
        boil();
        brew();
        input();
        putsth();
    }