메뉴 건너뛰기

Programing

C++ 프로그래밍

순수가상함수 사용 계산기

관리자 2019.02.27 18:39 조회 수 : 214

#include<iostream>
#include<map>
using namespace std;

class Command{
public:
 virtual void Invoke(int*,int)=0;
};
class CmdPlus :public Command{
 CmdPlus(){};
 void Invoke(int* agNum1,int agNum2){
  *agNum1+=agNum2;
 }
 friend class CmdManager;
};
class CmdMinus:public Command{
 CmdMinus(){}
 void Invoke(int* agNum1,int agNum2){
  *agNum1-=agNum2;
 }
 
 friend class CmdManager;
};
class CmdManager{
 static CmdManager* cm;
 int mAnswer;
 map<char, Command*> mArrayofCmd;
 void lnit(){
  mAnswer=0;
  AddCmd();
 }
 void AddCmd(){
  mArrayofCmd['+']=new CmdPlus();
  mArrayofCmd['-']=new CmdMinus();
 }
public:
 static CmdManager * getInstance(){
  if(cm==NULL){
   CmdManager* instanceOfCM=new CmdManager();
   instanceOfCM->lnit();
   return instanceOfCM;
  }
  return cm;
 }
 static void destroyInstance(){
  if(cm!=NULL){
   delete cm;
  }
 }
 void Invoke(int agNum,char agOperator){
  mArrayofCmd[agOperator]->Invoke(&mAnswer,agNum);
 }
 int getAnswer(){
  return mAnswer;
 }
};
CmdManager* CmdManager::cm=NULL;
int main(){
 CmdManager* cm=CmdManager::getInstance();
 cm->Invoke(5,'+');
 cm->Invoke(3,'+');
 cm->Invoke(2,'-');
 cout<<"Answer = "<<cm->getAnswer()<<endl;
 CmdManager::destroyInstance();
}

---------------------------------------------------------------------

순수가상함수 Invoke를 재정의하여 각 클래스에 맞게 연산하도록 하였다.

CmdManager클래스를 이용해 각각의 연산을 분류해서 호출하고 각 연산의 값을 누적시켰다.

번호 제목 글쓴이 최근 수정일 조회 수
공지 안내사항 관리자 2019.12.21 162
105 rewind() 함수의 사용에 관하여 관리자 2024.03.13 107
104 일반화 함수의 사용3 관리자 2019.03.01 162
103 일반화 함수의 사용2 관리자 2019.02.28 162
102 일반화 함수 사용 관리자 2019.02.28 166
» 순수가상함수 사용 계산기 관리자 2019.02.27 214
100 순수가상함수 사용한 여러 도형의 넓이 구하기 관리자 2019.02.27 199
99 순수 가상함수 관리자 2019.02.27 163
98 가상소멸자 관리자 2019.02.27 149
97 가상함수 사용3 관리자 2019.02.27 155
96 가상함수의 사용2 관리자 2019.02.26 168
95 가상함수 사용1 관리자 2019.02.26 156
94 사각형정보 입력받아 파일에 출력하기 관리자 2019.02.26 220
93 파일 복사 관리자 2019.02.26 161
92 파일 출력 관리자 2019.02.26 154
91 조작자 생성2 관리자 2019.02.26 152
90 조작자 생성1 관리자 2019.02.25 154
89 입출력연산자 중복 관리자 2019.02.25 152
88 일반 출력설정 관리자 2019.02.25 154
87 조작자를 통한 출력 설정 관리자 2019.02.25 167
86 연산자 중복 - 차집합구하기 관리자 2019.02.25 281
85 연산자 중복-교집합과 합집합 구하기 관리자 2019.02.25 198
84 연산자 중복-스트림연산자 관리자 2019.02.21 161
83 연산자 중복-치환연산자 관리자 2019.02.20 294
82 연산자 중복-friend함수 사용 관리자 2019.02.20 159
81 연산자 중복-단항연산자 관리자 2019.02.20 209
80 연산자 중복-관계연산자 관리자 2019.02.20 153
79 연산자 중복-이항연산자 관리자 2019.02.20 178
78 함수 중복 이용한 숫자 차 계산 관리자 2019.02.19 164
77 함수 포인터와 함수 중복 관리자 2019.02.19 204
위로