#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() ;
};
然后全部实现三个虚函数。
要重写或覆盖的方法,只有先声明,后才能实现。实现既可以在类声明内部,也可以在类声明外部。
你没有在子类中声明该函数,所以报错了。不过子类中也不需要全部实现父类的所有纯虚函数,只是这样会导致子类也是一个抽象类(不能产生实例对象)。