메뉴 건너뛰기

Programing

C++ 프로그래밍

순수가상함수 사용 계산기

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

#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 160
105 rewind() 함수의 사용에 관하여 관리자 2024.03.13 103
104 일반화 함수의 사용3 관리자 2019.03.01 159
103 일반화 함수의 사용2 관리자 2019.02.28 159
102 일반화 함수 사용 관리자 2019.02.28 154
» 순수가상함수 사용 계산기 관리자 2019.02.27 211
100 순수가상함수 사용한 여러 도형의 넓이 구하기 관리자 2019.02.27 194
99 순수 가상함수 관리자 2019.02.27 160
98 가상소멸자 관리자 2019.02.27 147
97 가상함수 사용3 관리자 2019.02.27 153
96 가상함수의 사용2 관리자 2019.02.26 166
95 가상함수 사용1 관리자 2019.02.26 153
94 사각형정보 입력받아 파일에 출력하기 관리자 2019.02.26 206
93 파일 복사 관리자 2019.02.26 157
92 파일 출력 관리자 2019.02.26 152
91 조작자 생성2 관리자 2019.02.26 150
90 조작자 생성1 관리자 2019.02.25 152
89 입출력연산자 중복 관리자 2019.02.25 150
88 일반 출력설정 관리자 2019.02.25 152
87 조작자를 통한 출력 설정 관리자 2019.02.25 163
86 연산자 중복 - 차집합구하기 관리자 2019.02.25 279
85 연산자 중복-교집합과 합집합 구하기 관리자 2019.02.25 196
84 연산자 중복-스트림연산자 관리자 2019.02.21 153
83 연산자 중복-치환연산자 관리자 2019.02.20 290
82 연산자 중복-friend함수 사용 관리자 2019.02.20 155
81 연산자 중복-단항연산자 관리자 2019.02.20 206
80 연산자 중복-관계연산자 관리자 2019.02.20 150
79 연산자 중복-이항연산자 관리자 2019.02.20 176
78 함수 중복 이용한 숫자 차 계산 관리자 2019.02.19 160
77 함수 포인터와 함수 중복 관리자 2019.02.19 200
위로