请问纯虚函数继承后子类不可以在子类外实现函数吗这段代码错了

 #include <iostream>
class door
{
public:
    virtual void setname(char*peo_name) = 0;
    virtual void setname() = 0;
    virtual char*getname() = 0;
};
class bitch:public door
{
private:
    char name[20];
};

void bitch::setname()
{

}

图片说明

对于抽象基类中的纯虚函数,要求子类在继承后必须实现。
子类重写基类方法的必要过程有:
1、子类声明基类函数的形式。
2、子类实现函数体。

上面的定义中,子类没有声明函数setname()就重写,则C++编译器默认setname来自基类继承方法。
修改方法为:
class bitch:public door
{
private:
char name[20];
public:
void setname(char*peo_name);
void setname();
char* getname() ;
};

然后全部实现三个虚函数。
要重写或覆盖的方法,只有先声明,后才能实现。实现既可以在类声明内部,也可以在类声明外部。

你没有在子类中声明该函数,所以报错了。不过子类中也不需要全部实现父类的所有纯虚函数,只是这样会导致子类也是一个抽象类(不能产生实例对象)。