\#include "stdafx.h"\
using namespace std;\
\
class Observer;\
\
class Base{\
public:\
bool fun(){ cout \<\< "Base" \<\< endl; return true; }\
};\
\
class Derived : public Base{\
public:\
Derived();\
\~Derived();\
bool fun(){ cout \<\< "Derived" \<\< endl; return false; }\
private:\
Observer \*\_observer;\
bool \_b;\
};\
\
class Observer{\
public:\
Observer( Derived \*derived ) : \_derived(derived){}\
private:\
Derived \*\_derived;\
};\
\
Derived::Derived()\
:\_b(this-\>fun()),\_observer( new Observer(this) )\
// warning C4355: “this”: 用于基成员初始值设定项列表\
// this指针不建议用于成员初始化列表中.\
// 至于为什么输出的是"Derived",因为重载可见性检测顺序,先\
// 此类中检测,然后再检测基类.\
{\
\
}\
\
Derived::\~Derived()\
{\
delete \_observer;\
}\
\
int main(){\
Derived d;\
}\
/\*\
Derived\
请按任意键继续. . .\
\*/