int i;
public: };
void main() { }
改过之后: //main.cpp
#include
using namespace std; class A {
int i;
A& p1=*(A*)new B(); A& p2=*(A*)new C(10); !*p1;//结果:i=1
cout<<\结果:p2{i}=11 cout<<\结果:p2{i}=11 C(int x=2,int y):B(x),i(y){}
int operator+=(A& x){return i+=x.get();} int get(){return i;}
public: };
class B:public A { public:
B(int x=1):A(x){} //int get(){return i;} virtual int get(){return i;} virtual void operator!()=0;
virtual int operator+=(A& x){return 0;} virtual ~A(){} A(int x=0):i(x){}
};
//void operator!() {cout<<\void operator!() {cout<<\
class C:public B {
int i;
public: };
void main() { }
cout<<\结果:p2{i}=11 //insert delete &p1; delete &p2;
//cout<<\结果:p2{i}=11 cout<<\结果:p2{i}=11 //!*p1;//结果:i=1 !p1;//结果:i=1 A& p1=*(A*)new B(); A& p2=*(A*)new C(10); int get(){return i;}
//int operator+=(A& x){return i+=x.get();} int operator+=(A& x){return i+=x.A::get();} //C(int x=2,int y):B(x),i(y){} C(int y,int x=2):B(x),i(y){}