《深度探索C++对象模型》P.239 中间部分伪码模拟: // VC++ 2005 #include <stdio.h> class X; class Y; extern X g_x; extern Y g_y; class Y { public: Y() { printf("Y's default constructor/n"); } Y(Y const&) { printf("Y's copy constructor/n"); } ~Y() { printf("Y's destructor/n"); } bool operator==(Y const&) const { printf("Y: operator==()/n"); return true; } }; class X { public: X() { printf("X's default constructor/n"); } X(X const&) { printf("X's copy constructor/n"); } ~X() { printf("X's destructor/n"); } operator Y() const { printf("X: operator Y()/n"); return g_y; } X getValue() { printf("X: getValue()/n"); return g_x; } }; X g_x; Y g_y; int main() { Y y; X x; printf("--------------------------------/n"); if (y == x.getValue()) { printf("y == x.getValue()/n"); } printf("--------------------------------/n"); return 0; } X's default constructor Y's default constructor Y's default constructor X's default constructor -------------------------------- X: getValue() X's copy constructor X: operator Y() Y's copy constructor Y: operator==() Y's destructor X's destructor y == x.getValue() -------------------------------- X's destructor Y's destructor Y's destructor X's destructor