企业如何做网站建站,男子替人做网站网站,网站上的产品介绍如何做,淘宝单网站建设模板方法模式 C
#include iostream
using namespace std;class TestPaper
{
public:void TestQ1(){cout 杨过得到#xff0c;后来给了郭靖#xff0c;炼成倚天剑#xff0c;屠龙刀的玄铁可能是[ ]\na.球磨铸铁 b.马口贴 c.高速合金钢 d.碳素纤维
#include iostream
using namespace std;class TestPaper
{
public:void TestQ1(){cout 杨过得到后来给了郭靖炼成倚天剑屠龙刀的玄铁可能是[ ]\na.球磨铸铁 b.马口贴 c.高速合金钢 d.碳素纤维 endl;cout 答案 Answer1() endl;}void TestQ2(){cout 杨过、程英、陆无双铲除了情花造成[ ]\na.使这种植物不再害人 b.使一种珍稀物种灭绝c.破坏了那个生物圈的生态平衡d.造成该地区沙漠化 endl;cout 答案 Answer2() endl;}void TestQ3(){cout 蓝凤凰致使华山师徒、桃谷六仙呕吐不止如果你是大夫会给他们开什么药[ ]\na.阿司匹林b.牛黄解毒片c.氟哌酸d.让他们喝大量的生牛奶e.以上全不对 endl;cout 答案 Answer3() endl;}virtual string Answer1(){return null;}virtual string Answer2(){return null;}virtual string Answer3(){return null;}
};class TestPaperA : public TestPaper
{string Answer1(){return a;}string Answer2(){return b;}string Answer3(){return c;}
};class TestPaperB : public TestPaper
{string Answer1(){return a;}string Answer2(){return a;}string Answer3(){return a;}
};int main()
{cout 同学A答题情况: endl;TestPaper *A new TestPaperA();A-TestQ1();A-TestQ2();A-TestQ3();cout endl;cout 同学B答题情况: endl;TestPaper *B new TestPaperB();B-TestQ1();B-TestQ2();B-TestQ3();return 0;
}C
#include stdio.h
#include string.h
typedef struct
{char question[256];char answer[256];
} Question;typedef struct
{Question questions[3];char *(*getAnswer)(int questionIndex);
} TestPaperBase;// 定义问题
Question g_questions[3] {{杨过得到后来给了郭靖炼成倚天剑屠龙刀的玄铁可能是[ ]\na.球磨铸铁 b.马口贴 c.高速合金钢 d.碳素纤维, null},{杨过、程英、陆无双铲除了情花造成[ ]\na.使这种植物不再害人 b.使一种珍稀物种灭绝c.破坏了那个生物圈的生态平衡d.造成该地区沙漠化, null},{蓝凤凰致使华山师徒、桃谷六仙呕吐不止如果你是大夫会给他们开什么药[ ]\na.阿司匹林b.牛黄解毒片c.氟哌酸d.让他们喝大量的生牛奶e.以上全不对, null}
};char *getAnswerA(int index)
{switch (index){case 0:return a;case 1:return b;case 2:return c;default:return Invalid question index;}
}char *getAnswerB(int index)
{switch (index){case 0:return a;case 1:return a;case 2:return a;default:return Invalid question index;}
}void TestQ(TestPaperBase *paper, int qIndex)
{strncpy(paper-questions[qIndex].answer, paper-getAnswer(qIndex), sizeof(paper-questions[qIndex].answer) - 1);printf(%s\n, paper-questions[qIndex].question);printf(答案:%s\n, paper-questions[qIndex].answer);
}int main()
{TestPaperBase TestPaperA;memcpy(TestPaperA.questions, g_questions, sizeof(g_questions));TestPaperA.getAnswer getAnswerA;printf(同学A答题情况:\n);TestQ(TestPaperA, 0);TestQ(TestPaperA, 1);TestQ(TestPaperA, 2);printf(\n);TestPaperBase TestPaperB;memcpy(TestPaperB.questions, g_questions, sizeof(g_questions));TestPaperB.getAnswer getAnswerB;printf(同学B答题情况:\n);TestQ(TestPaperB, 0);TestQ(TestPaperB, 1);TestQ(TestPaperB, 2);return 0;
}总结
设计基类的时候最大程度上的去复用代码尽可能的泛化。细节高层次的差别的地方可以virtual要求子类重写。