OOP HomeWork
This commit is contained in:
86
oop_hw6/hw5/main.cpp
Normal file
86
oop_hw6/hw5/main.cpp
Normal file
@@ -0,0 +1,86 @@
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
class CallBackObject;
|
||||
class Server
|
||||
{
|
||||
public:
|
||||
Server(int size) :len(size)
|
||||
{
|
||||
data = new int [len];//1
|
||||
for (int i = 0;i < len;++i)
|
||||
data[i] = i + 1;
|
||||
}
|
||||
~Server() { delete[] data; }//2
|
||||
int Total(CallBackObject& obj);
|
||||
private:
|
||||
int len;
|
||||
int* data;
|
||||
};
|
||||
|
||||
class CallBackObject
|
||||
{
|
||||
public:
|
||||
virtual ~CallBackObject() {}
|
||||
virtual int CallBackFunc(int val) = 0;//4
|
||||
};
|
||||
|
||||
class ClientA :public CallBackObject
|
||||
{
|
||||
public:
|
||||
virtual ~ClientA() {}
|
||||
virtual int CallBackFunc(int val)
|
||||
{
|
||||
return val;
|
||||
}
|
||||
void RequestA(Server& srv)
|
||||
{
|
||||
cout << srv.Total(*this) << endl;//5
|
||||
}
|
||||
};
|
||||
int Server::Total(CallBackObject& obj)
|
||||
{
|
||||
int sum = 0;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
sum += obj.CallBackFunc(data[i]);//3
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
class ClientB :public CallBackObject
|
||||
{
|
||||
public:
|
||||
virtual ~ClientB() {}
|
||||
virtual int CallBackFunc(int val)
|
||||
{
|
||||
return val * val;//6
|
||||
}
|
||||
void RequestB(Server& srv) {
|
||||
cout << "ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=" << srv.Total(*this) << endl;//7
|
||||
}
|
||||
};
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
|
||||
int main()
|
||||
{
|
||||
Server srv2(2), srv5(5);
|
||||
ClientA a;
|
||||
a.RequestA(srv2); //<2F><><EFBFBD><EFBFBD>3
|
||||
a.RequestA(srv5); //<2F><><EFBFBD><EFBFBD>15
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
|
||||
Server ssrv3(3);
|
||||
ClientB b;
|
||||
b.RequestB(srv2);
|
||||
b.RequestB(srv3);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
1)<29><><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>1 - 5<><35><EFBFBD><EFBFBD>ȷ<EFBFBD>Ĵ<EFBFBD><C4B4>룬ʹ<EBA3AC><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ3<CEAA><33>15.
|
||||
2)<29><><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD>6 - 7<><37><EFBFBD><EFBFBD>ȷ<EFBFBD>Ĵ<EFBFBD><C4B4>룬ʹ<EBA3AC><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 5
|
||||
ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 14
|
||||
3)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ClientB<74>е<EFBFBD><D0B5><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
1 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 9
|
||||
1 2 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 36
|
||||
|
||||
*/
|
BIN
oop_hw6/hw5/测试截图5.png
Normal file
BIN
oop_hw6/hw5/测试截图5.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 342 KiB |
Reference in New Issue
Block a user