64,666
社区成员
发帖
与我相关
我的任务
分享
class CBase
{
public:
virtual int doSomething(int nA, int nB) = 0;
static void print(CBase* pBase, char* pBelong, int nA, int nB)
{
printf("类C%s 计算 = %d\n", pBelong, pBase->doSomething(nA, nB));
}
};
class CAdd: public CBase
{
public:
// 加法
virtual int doSomething(int nA, int nB){return nA + nB;}
};
class CMuty: public CBase
{
public:
// 乘法
virtual int doSomething(int nA, int nB){return nA * nB;}
};
class CDiv: public CBase
{
public:
// 除法
virtual int doSomething(int nA, int nB){return nA / nB;}
};
enum VALUE{ADD, Muty, Div};
#define Symbol2Str(s) (#s)
#define DOSOMETHING(class_name, nA, nB){ \
CBase* pBase = new C##class_name;\
CBase::print(pBase, Symbol2Str(class_name), nA, nB);\
delete pBase;}
int main()
{
int nA = 100,nB = 10;
DOSOMETHING(Add, nA, nB);
DOSOMETHING(Muty, nA, nB);
DOSOMETHING(Div, nA, nB);
getchar();
return 0;
}
class CBase
{
public:
virtual int doSomething(int nA, int nB) = 0;
};
class CAdd: public CBase
{
public:
// 加法
virtual int doSomething(int nA, int nB){return nA + nB;}
};
class CMuty: public CBase
{
public:
// 乘法
virtual int doSomething(int nA, int nB){return nA * nB;}
};
class CDiv: public CBase
{
public:
// 除法
virtual int doSomething(int nA, int nB){return nA / nB;}
};
#define DOSOMETHING(class_name) \
new C##class_name;\
int main()
{
CBase* pBase = NULL;
int nA = 100,nB = 10;
pBase = DOSOMETHING(Add);
printf("Add 计算 = %d\n", pBase->doSomething(nA, nB));
delete pBase;
pBase = DOSOMETHING(Muty);
printf("Muty 计算 = %d\n", pBase->doSomething(nA, nB));
delete pBase;
pBase = DOSOMETHING(Div);
printf("Div 计算 = %d\n", pBase->doSomething(nA, nB));
delete pBase;
getchar();
return 0;
}