#include <iostream.h> class CallBackObject; class Server { public: Server(int size) :len(size){ -----(1)-----; for(int i=0;i< len;++i) data[i]= i+1; } ~Server( ) { ----(2)-----; } int Total(CallBackObject& obj); private: int len; int * data; }; class CallBackObject { public: virtual ~CallBackObject( ) {} ----(4)-----; }; class ClientA:public CallBackObject { public: virtual ~ClientA( ) {} virtual int CallBackFunc(int val){ return val; } void RequestA(Server& srv) { cout<< -----(5)----- <<endl; } }; int Server::Total(CallBackObject& obj) { int sum = 0; for(int i=0; i<len; ++i) { -----(3)-----; } return sum; } class ClientB:public CallBackObject { public: virtual ~ClientB( ) {} virtual int CallBackFunc(int val){ -----(6)-----; } void RequestB(Server& srv) { -----(7)-----; } }; //主函数1 void main( ) { Server srv2(2),srv5(5); ClientA a; a.RequestA(srv2); //输出3 a.RequestA(srv5); //输出15 } //主函数2 void main( ) { Server srv2(2), srv3(3); ClientB b; b.RequestB(srv2); b.RequestB(srv3); } 1.)请分别给出空格1-5中正确的代码,使得主函数1的输出为3和15. 2.)请分别给出空格6-7中正确的代码,使得主函数2的输出为: 平方和=5 平方和=14 3.请重新实现ClientB中的相关函数,使得主函数2的输出为: 1 2 的立方和=9 1 2 3 的立方和=36
时间: 2024-04-26 12:25:02 浏览: 100
1.
(1) data = new int[len];
(2) delete [] data;
(3) sum += obj.CallBackFunc(data[i]);
(4) virtual int CallBackFunc(int val) = 0;
(5) srv.Total(*this);
2.
(6) return val*val;
(7) cout << "平方和=" << srv.Total(*this) << endl;
3.
class ClientB : public CallBackObject {
public:
virtual ~ClientB() {}
virtual int CallBackFunc(int val) {
sum += val*val*val;
return val;
}
void RequestB(Server& srv) {
sum = 0;
for (int i = 0; i < srv.len; ++i) {
srv.data[i] = CallBackFunc(srv.data[i]);
cout << srv.data[i] << " ";
}
cout << "的立方和=" << sum << endl;
}
private:
int sum;
};
//主函数2
void main() {
Server srv2(2), srv3(3);
ClientB b;
b.RequestB(srv2); //输出1 2 的立方和=9
b.RequestB(srv3); //输出1 2 3 的立方和=36
}