#include <iostream>
using namespace std;
class Base
{
public :
virtual void Foo( ) = 0 ;
} ;
class Derived
: public Base
{
public :
// void Foo() { } // Derived cannot be instantiated, it MUST define Foo()
// OR its derived classes MUST define Foo(). The
// method is NOT optional when you want to instantiate
// the class
} ;
int main( ) {
// your code goes here
Derived d;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQmFzZQp7CglwdWJsaWM6CgkJdmlydHVhbCB2b2lkIEZvbygpID0gMDsKfTsKCmNsYXNzIERlcml2ZWQKCTogcHVibGljIEJhc2UKewoJcHVibGljOgoJCS8vIHZvaWQgRm9vKCkgeyB9IC8vIERlcml2ZWQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCwgaXQgTVVTVCBkZWZpbmUgRm9vKCkKCQkgICAgICAgICAgICAgICAgICAvLyBPUiBpdHMgZGVyaXZlZCBjbGFzc2VzIE1VU1QgZGVmaW5lIEZvbygpLiBUaGUgCgkJICAgICAgICAgICAgICAgICAgLy8gbWV0aG9kIGlzIE5PVCBvcHRpb25hbCB3aGVuIHlvdSB3YW50IHRvIGluc3RhbnRpYXRlCgkJICAgICAgICAgICAgICAgICAgLy8gdGhlIGNsYXNzCn07CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCURlcml2ZWQgZDsKCXJldHVybiAwOwp9
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:22:10: error: cannot declare variable ‘d’ to be of abstract type ‘Derived’
Derived d;
^
prog.cpp:10:7: note: because the following virtual functions are pure within ‘Derived’:
class Derived
^
prog.cpp:7:16: note: virtual void Base::Foo()
virtual void Foo() = 0;
^
stdout