#include <iostream>
class Interface1 {
public:
Interface1() {};
virtual ~Interface1() {};
virtual void Method1() = 0;
};
class Class1 : public Interface1 {
public:
Class1() {};
virtual ~Class1() {
std::cout << "Class1.destructor" << std::endl;
};
virtual void Method1() {
std::cout << "Class1.Method1()" << std::endl;
}
};
class Class2 : public Class1 {
public:
Class2() {};
~Class2() {
std::cout << "Class2.destructor" << std::endl;
}
void Method1(){
std::cout << "Class2.Method1()" << std::endl;
}
};
int main() {
Interface1 *p = new Class1();
p->Method1();
delete p;
Interface1 *q = new Class2();
q->Method1();
delete q;
return 0;
}
/* end */