纯虚函数和虚函数有什么区别?
我知道"纯虚函数是一个没有正文的虚函数",但这意味着什么,以及下面这一行实际完成的内容:
virtual void virtualfunctioname() = 0
Run Code Online (Sandbox Code Playgroud) 我的基本理解是没有纯虚函数的实现,但是,有人告诉我可能有纯虚函数的实现.
class A {
public:
virtual void f() = 0;
};
void A::f() {
cout<<"Test"<<endl;
}
Run Code Online (Sandbox Code Playgroud)
代码是否正常?
使其成为具有实现的纯虚函数的目的是什么?
问题是:尝试编译时,我不断收到未实现的纯虚拟方法错误。我已经在抽象基类中实现了所有纯虚方法。有任何想法吗?
这是抽象基类:
class record{
public:
virtual int getID()=0;
virtual record *clone();
};
Run Code Online (Sandbox Code Playgroud)
和实施:
class sdata: public record{
public:
sdata(std::string s = ""){data=s; ID=atoi(data.substr(0,8).c_str());}
virtual int getID(){return ID;}
private:
std::string data;
int ID;
};
Run Code Online (Sandbox Code Playgroud)
抱歉,这是完整的错误消息:
“record”中未实现的纯虚拟方法“getID”
也许这段代码导致了错误:
int hashTable::hash(record *x) {
return floor(m * (x->getID() * A - floor(x->getID() * A)));
}
Run Code Online (Sandbox Code Playgroud)