'वर्चुअल शून्य foo () = 0;' वाक्यविन्यास का मतलब यह नहीं है कि आप वर्तमान कक्षा में फू () को लागू नहीं कर सकते, आप कर सकते हैं। इसका मतलब यह भी नहीं है कि आपको इसे व्युत्पन्न वर्गों में लागू करना चाहिए । इससे पहले कि आप मुझे थप्पड़ मारें, आइए डायमंड प्रॉब्लम देखें: (इम्प्लिट्ट कोड, माइंड यू)।
class A
{
public:
virtual void foo()=0;
virtual void bar();
}
class B : public virtual A
{
public:
void foo() { bar(); }
}
class C : public virtual A
{
public:
void bar();
}
class D : public B, public C
{}
int main(int argc, const char* argv[])
{
A* obj = new D();
**obj->foo();**
return 0;
}
अब, obj-> foo () मंगलाचरण के परिणामस्वरूप B :: foo () और फिर C :: bar () होगा।
आप देखें ... शुद्ध आभासी विधियों को व्युत्पन्न वर्गों में लागू नहीं किया जाना है (फू) का कक्षा सी में कोई कार्यान्वयन नहीं है - संकलक संकलन करेगा) C ++ में बहुत अधिक खामियां हैं।
आशा है कि मैं मदद कर सकता है :-)
deported
। (या तो .inl या .cpp में सामान्य फ़ाइल-नामिंग प्रथाओं को देखें)।