#include <iostream>
#include <string>
using namespace std;
class B{
public:
B(){
cout << "BC" << endl; x = 0;
}
virtual ~B(){
cout << "BD" << endl;
}
void f(){
cout << "BF" << endl;
}
virtual void g(){
cout << "BG" << endl;
}
private:
int x; };
class D: public B{
public:
D(){
cout << "dc" << endl; y = 0;
}
virtual ~D(){
cout << "dd" << endl;
}
void f(){
cout << "df" << endl;
}
virtual void g(){
cout << "dg" << endl;
}
private:
int y; };
int main(){
B b;
B *bp = &b;
D d;
D *dp = &d;
bp->f();
bp->g();
bp = dp;
bp->f();
bp->g();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIApjbGFzcyBCewpwdWJsaWM6CiAgICBCKCl7CiAgICAgICAgY291dCA8PCAiQkMiIDw8IGVuZGw7IHggPSAwOwogICAgfQogICAgdmlydHVhbCB+QigpewogICAgICAgIGNvdXQgPDwgIkJEIiA8PCBlbmRsOwogICAgfQogICAgdm9pZCBmKCl7CiAgICAgICAgY291dCA8PCAiQkYiIDw8IGVuZGw7CiAgICB9CiAgICB2aXJ0dWFsIHZvaWQgZygpewogICAgICAgIGNvdXQgPDwgIkJHIiA8PCBlbmRsOwogICAgfQpwcml2YXRlOgogICAgaW50IHg7IH07CiAKIAogCmNsYXNzIEQ6IHB1YmxpYyBCewpwdWJsaWM6CiAgICBEKCl7CiAgICAgICAgY291dCA8PCAiZGMiIDw8IGVuZGw7IHkgPSAwOwogICAgfQogICAgdmlydHVhbCB+RCgpewogICAgICAgIGNvdXQgPDwgImRkIiA8PCBlbmRsOwogICAgfQogICAgdm9pZCBmKCl7CiAgICAgICAgY291dCA8PCAiZGYiIDw8IGVuZGw7CiAgICB9CiAgICB2aXJ0dWFsIHZvaWQgZygpewogICAgICAgIGNvdXQgPDwgImRnIiA8PCBlbmRsOwogICAgfQpwcml2YXRlOgogICAgaW50IHk7IH07CiAKaW50IG1haW4oKXsKICAgIEIgYjsKICAgIEIgKmJwID0gJmI7CiAgICBEIGQ7CiAgICBEICpkcCA9ICZkOwogICAgYnAtPmYoKTsKICAgIGJwLT5nKCk7CiAgICBicCA9IGRwOwogICAgYnAtPmYoKTsKICAgIGJwLT5nKCk7Cn0=