65,211
社区成员
发帖
与我相关
我的任务
分享
//要求:不改变程序结构,在出错行的行首做一标记*,并将该多最少的正确语句下载所在行下放或者出错部位的右侧
#include<iostream>
using namespace std;
class A
{
int i;
public:
A(int x = 0):i(x){}
virtual int get(){return i;}
//
//
};
class B:public A
{
public:
B(int x = 1):A(x){}
void operator!(){cout<<"i = "<<get()<<endl;}
//
//
};
class C:public B
{
int i;
public:
C(int x = 2, int y):B(x),i(y){}
int operator+=(A &x){return i+=x.get();}
int get(){return i;}
};
int main()
{
A &p1 = *(A *)new B();
A &p2 = *(A *)new C(10);
!*p1;
cout<<"p2{i}="<<(p2+=p1)<<endl;
cout<<"p2{i}="<p2.get()<<endl;
return 0;
}
#include<iostream>
using namespace std;
class A
{
int i;
public:
A(int x = 0):i(x){}
virtual int get(){return i;}
virtual A& operator*(){return *this;}
virtual void operator!(){}
virtual int operator+=(A &x){return i+=x.get();}
};
class B:public A
{
public:
B(int x = 1):A(x){}
void operator!(){cout<<"i = "<<get()<<endl;}
B& operator*(){return *this;}
};
class C:public B
{
int i;
public:
C(int x = 2, int y):B(x),i(y){}
int operator+=(A &x)
{
return i+=x.get();
}
int get()
{
return i;
}
};
int main()
{
A &p1 = *(A *)new B();
A &p2 = *(A *)new C(10, 10);
!*p1;//要求显示的结果为i = 1;
cout<<"p2{i}="<<(p2+=p1)<<endl;//要求显示结果为p2{i} = 11;
cout<<"p2{i}="<<p2.get()<<endl;//要求显示结果为p2{i} = 11;
return 0;
}
#include<iostream>
using namespace std;
class A
{
int i;
public:
A(int x = 0):i(x){}
virtual int get(){return i;}
virtual void operator!(){}
virtual int operator+=(A &x){return 0;}
};
class B:public A
{
public:
B(int x = 1):A(x){}
void operator!(){cout<<"i = "<<get()<<endl;}
//
//
};
class C:public B
{
int i;
public:
C(int x = 2, int y=0):B(x),i(y){}
int operator+=(A &x)
{
return i+=x.get();
}
int get()
{
return i;
}
};
int main()
{
A &p1 = *(A *)new B();
A &p2 = *(A *)new C(10, 10);
!p1;//要求显示的结果为i = 1;
cout<<"p2{i}="<<(p2+=p1)<<endl;//要求显示结果为p2{i} = 11;
cout<<"p2{i}="<<p2.get()<<endl;//要求显示结果为p2{i} = 11;
return 0;
}
#include<iostream>
using namespace std;
class A
{
int i;
public:
A(int x = 0):i(x){}
virtual int get(){return i;}
//还要加代码
//还要加代码
};
class B:public A
{
public:
B(int x = 1):A(x){}
void operator!(){cout<<"i = "<<get()<<endl;}
//还要加代码
//还要加代码
};
class C:public B
{
int i;
public:
C(int x = 2, int y):B(x),i(y){}
int operator+=(A &x){return i+=x.get();}
int get(){return i;}
};
int main()
{
A &p1 = *(A *)new B();
A &p2 = *(A *)new C(10);
!*p1;//要求显示的结果为i = 1;
cout<<"p2{i}="<<(p2+=p1)<<endl;//要求显示结果为p2{i} = 11;
cout<<"p2{i}="<p2.get()<<endl;//要求显示结果为p2{i} = 11;
return 0;
}
#include<iostream>
using namespace std;
class A
{
int i;
public:
A(int x = 0):i(x){}
virtual int get(){return i;}
virtual void operator!() = 0;
virtual int operator+=() = 0;
};
class B:public A
{
public:
B(int x = 1):A(x){}
void operator!(){cout<<"i = "<<get()<<endl;}
int operator+=(A &x){return i+=x.get();}
};
class C:public B
{
int i;
public:
C(int y, int x = 2):B(x),i(y){}
int operator+=(A &x){return i+=x.get();}
int get(){return i;}
};
int main()
{
A &p1 = *(A *)new B();
A &p2 = *(A *)new C(10);
!(B&)p1;
cout<<"p2{i}="<<(((C&)p2)+=p1)<<endl;
cout<<"p2{i}="<<(C&)p2.get()<<endl;
return 0;
}
class C:public B
{
int i;
public:
///C(int x = 2, int y):B(x),i(y){}
C(int y, int x = 2):B(x),i(y){}
int operator+=(A &x){return i+=x.get();}
int get(){return i;}
};
int main()
{
A &p1 = *(A *)new B();
A &p2 = *(A *)new C(10);
///!*p1;
!( dynamic_cast<B&>(p1) );
///cout<<"p2{i}="<<(p2+=p1)<<endl;
cout<<"p2{i}="<<(dynamic_cast<C&>(p2)+=p1)<<endl;
cout<<"p2{i}="<p2.get()<<endl;
return 0;
}
cout<<"p2{i}="<<(p2+=p1)<<endl;//要求显示结果为p2{i} = 11;
cout<<"p2{i}="<p2.get()<<endl;//要求显示结果为p2{i} = 11;
*p2+=*p1;
#include<iostream>
using namespace std;
class A
{
int i;
public:
A(int x = 0):i(x){}
virtual int get(){return i;}
//
//
};
class B:public A
{
public:
B(int x = 1):A(x){}
void operator!(){cout<<"i = "<<get()<<endl;}
//
//
};
class C:public B
{
int i;
public:
C(int x = 2):B(x),i(x){}
int operator+=(A &x){return i+=x.get();}
int get(){return i;}
};
int main()
{
B *p1 = new B();
C *p2 = new C(10);
!*p1;
*p2+=*p1;
cout<<"p2{i}="<<p2->get() << endl;
return 0;
}
int main()
{
A &p1 = *(A *)new B();
C &p2 = *(C *)new C();
!&p1;
cout<<"p2{i}="<<(p2+=p1)<<endl;
cout<<"p2{i}="<<p2.get()<<endl;
system("pause");
return 0;
}
//要求:不改变程序结构,在出错行的行首做一标记*,并将该多最少的正确语句下载所在行下放或者出错部位的右侧
#include<iostream>
using namespace std;
class A
{
int i;
public:
A(int x = 0):i(x){}
virtual int get(){return i;}
//
//
};
class B:public A
{
public:
B(int x = 1):A(x){}
void operator!(){cout<<"i = "<<get()<<endl;}
//
//
};
class C:public B
{
int i;
public:
C(int x = 2, int y):B(x),i(y){}
int operator+=(A &x){return i+=x.get();}
int get(){return i;}
};
int main()
{
A &p1 = *(A *)new B();
A &p2 = *(A *)new C(10);
!*p1;//要求显示的结果为i = 1;
cout<<"p2{i}="<<(p2+=p1)<<endl;//要求显示结果为p2{i} = 11;
cout<<"p2{i}="<p2.get()<<endl;//要求显示结果为p2{i} = 11;
return 0;
}