컴공 일기 25
게시글 주소: https://orbi.kr/00056748607

#include <iostream>
using namespace std;
#define DEFAULT_FARE 1000
class CPerson{
public:
CPerson() {}
virtual ~CPerson(){
cout << "virtual ~CPerson" << endl;
}
virtual void CalcFare() = 0;
virtual unsigned int GetFare() {return m_nFare;}
protected:
unsigned int m_nFare = 0;
};
class C_GoinWater : public CPerson{
public:
virtual void CalcFare() {
m_nFare = 0; // 무료, 노인 공경
}
};
class C_3su : public CPerson{
public:
virtual void CalcFare() {
m_nFare = DEFAULT_FARE * 50 / 100; // 50%, 중년 공경
}
};
class C_jaesu : public CPerson{
virtual void CalcFare(){
m_nFare = DEFAULT_FARE * 75 / 100; // 75%, 넌 아직 젊어
}
};
class C_hyeonyuk : public CPerson{
public:
virtual void CalcFare() {
m_nFare = DEFAULT_FARE; // 100%
}
};
/////////////////////////////////////////////////////////////////////
/////////////사용자 코드
int main() {
CPerson* arList[4] = {0,};
int N_SU = 0;
// 1.자료 입력
for(auto &person : arList){
cout << "도긩이 : 당신의 N은 몇 입니까?" << endl;
cin >> N_SU;
if(N_SU == 0 or N_SU == 1)
person = new C_hyeonyuk;
else if(N_SU == 2)
person = new C_jaesu;
else if(N_SU == 3)
person = new C_3su;
else if(N_SU > 3)
person = new C_GoinWater;
//생성한 객체에 맞는 요금이 자동 한 줄로 계산 끝.
person -> CalcFare();
}
//2.자료 출력
for(auto person : arList)
cout << person->GetFare()<< "원" << endl;
//3.자료 삭제 및 종료 -> memory leak 막는 건 프로그래머의 기본 덕목
for(auto person : arList)
delete person;
return 0;
}
실행결과 :
도긩이 : 당신의 N은 몇 입니까?
4
도긩이 : 당신의 N은 몇 입니까?
3
도긩이 : 당신의 N은 몇 입니까?
2
도긩이 : 당신의 N은 몇 입니까?
1
0원
500원
750원
1000원
virtual ~CPerson
virtual ~CPerson
virtual ~CPerson
virtual ~CPerson
잔혹하긴 하지만.. 수능을 몇 번 봤느냐에 따라 버스 비용을 계산해주는 프로그램을 만들었습니다.
농담 삼아 만들어 본 예제이긴 하지만, 꽤 중요한 구조이긴 합니다. 일단, 프로그램의 성능을 높이려면 "데이터 분류"는 입력부분에서 모두 이루어지는 게 옳습니다. 왜냐하면, 컴퓨터가 가장 여유로울 때가 입력 시기거든요. 출력 때 분류를 하려고 하면, 연산량이 굉장히 늘어나기 때문에 프로그램이 효율적으로 돌아가진 않습니다. 그래서, 이 코드가 좋은 건 자료 출력부분에서 person->CalcFare(); 딱 한 줄로 선언했다는 것입니다. 이 한 줄로 모든 데이터에 대해서 원하는 출력이 가능하기 때문에 그만큼 효율적인 프로그램이지요. 출력 부분에서 비용 지출을 극한으로 아낀 셈입니다. 원래 성능 업그레이드라는 게, 별 것 없습니다. 안해도 될 걸 안하면 되죠.
허나, 이 효율적인 구조가 가능했던 건, 단 하나의 예약어 때문인데 그것이 바로 CPerson 부분에 있는 virtual 입니다.
virtual을 해줬기 때문에, CPerson을 상속한 현역(hyeonyuk), 재수(jaesu), 삼수(3su), 고인물(GoinWater) 클래스들이 모두 CalcFare 함수를 재정의할 수 있었지요. 즉, CPerson이라는 추상 클래스가 일종의 interface를 주어서 각각의 상속 클래스들에게 자신이 원하는 CalcFare 함수를 조각할 수 있도록 만들어준 것이지요. 이것이 가능했기 때문에 출력 부분에서 비용을 아낄 수 있었던 겁니다.
흔히들, 이런 구조를 Look-up table 혹은 편의상 룩업구조라고도 얘기합니다.
이상 수능 4번 본 4수생 드림..
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
미적분에서 등비급수 도형문제랑 함수의 극한 도형문제 같은 시대에 뒤떨어지는 문제들이...
-
으아아아아 5 1
으아아아아아아아
-
기하런 < 의미없음? 0 1
공통은 웬만하면 다 맞는데 미적에서 불안정합니다올해 표점차도 거의 없을거란 전망이...
-
박종민 즌3 0 0
박종민 즌3 모의반 부터 들어가도 따라 갈 수 있나..? 6모 몇등급 정도는 나와야 될거 같음?
-
내신으로세지하고지구다듣는데 4 3
세지에서대기대순환설명듣고 다음시간지구갔는데 거기서또대기대순환설명들은게 뭔가웃겻음
-
학점을 잘 받고 싶었다 0 0
성실하게 공부했는데 나도 잘하고 싶었는데 ㅜㅜㅜㅜㅜㅜ
-
너무 힘들다.. 4 1
머리가깨질것같다..
-
퀄컴 얘 왜이래... 2 0
나도 이정도를 생각한건 아닌데
-
본인이백분위100인거 1 0
찐따영역 앰생영역
-
얼버기 11 2
?
-
김현우 쌤 16주차 0 0
김현우 선생님 중간내신휴강 끝나시고 16주차부터 합류하려고하는데 괜찮을까요? 전...
-
앰생 영역 백분위 100 4 0
줄여서 앰백임
-
덮 성적 어케 확인해요? 2 1
잇올에서 보긴 햇는데 거기서도 안주는것같길래 아닌가요
-
기본개념도 다 글만으로 주어지면 풀수있을까요
-
우산 없는 거 같아서 이따 밤에 씌워주고 싶은데 지난번에는 우산 없어서 부모님한테...
-
걍2뜨면자살하면됨 4 1
ㅂㅇㅇㅂㅇㅉㅇㄹㄱㅈ
-
이게 국어는 본인이 높1을 띄워야된다는강박이잇음 0 2
내신뽀록이라그런건데.. 아직도과거에서벗어나지못해서 멘탈박살나서개념어까지흔들려버리는상활이발생함
-
비올때편의점우산사는사람들이신기함 10 1
고작 비한번 몇분 피하려고 만원가까이 쓰는게 맞는건가???다부자라고 그러기엔 너무들많이사감...
-
이콜라이 제대로 자라라 6 0
너 안자라면 배지 다시 만들어야되....
-
이기상쌤 강의듣는분들 질문좀 2 1
이기상쌤이 개념이랑 외울내용 설명해주시고, 막 점이 깜빡거리는 ppt로...
-
국어 조언 부탁드립니다 0 0
작년 69수능 백분위 91 90 90입니다 항상 2컷 +1~2점으로 2컷 판독기...
-
평양냉면 5 2
에 석갈비에 고기만두에 추가밥을묵자 이정도면 든든하겟지 살좀 더 찌워야댐
-
휴 멘탈을 회복햇다 1 2
-
내 default프사 맞춰보셈 2 1
1. default_01 2. default_02 3. default_03
-
열품타로 시간 재면서 2 1
쉬는 시간 다 거르니까 공부시간 채우기 개빡센데? 그간 내 공부는 그냥 풍선공부였나
-
수학 실전개념 중요성 0 0
현재 실력은 3-4등급 정도 같고 양승진쌤 개념강의부터 시작해서 지금은 기출코드...
-
아니 사칭만 해도 간다고 8 3
미카리를 얼마나 싫어하는 거임 ㅋㅋㅋ
-
지1 5 0
얼른 기출끝내고 엔제실모풀어야지
-
시험 하도 망하다보면 2 2
긴장 하나도 안되더라 난 내신시험 볼때마다 편했음
-
헉 망할! 0 1
여태까지 오 개 잘보겠는데? 하고 ㅈ망한적은 셀수도 없지만 아예 지금부터 ㅈ 망하겠는데는 처음임
-
기침빌런시발타파방법좀요 0 0
사흘째 마스크안끼고 5분쿨타임으로 마른기침 4시간내내하길래 노캔끼고 백색소음 튼채로...
-
욕심이없음 2 0
근데이게인생이어딘가한번잘못됨
-
드디어 300문제까지 왔네 8 3
작년 9월부터 7개월동안 만든게 어느새 300개가 됐네요
-
아라양 진짜 감? 3 1
-
생각도구 Ver.15 0 0
1. Q&A Chain 답변과 연관된 질문을 연쇄적으로 한다2. 한 문장의...
-
ㅅㅂ 내 성별에 반응들이 왜 그래요 12 3
남자같았나
-
한달 밥값 30+알파로 수의대 가면 ㄹㅈㄷ 효도인가 6 1
효녀가 되
-
병원다님
-
찬란하게빛나던내모습은 5 0
어디로날아갔을까어느별로
-
ㅄ 2 0
ㅇㅁㅇㄴ
-
열등감이랑인정욕구만비대함 3 1
-
정신이안좋다.. 4 0
학교에서도다티가날듯
-
진짜 너무 오래 걸리고 정답률도 낮네 평가원은 풀어봤던거여서 그런가 술술술인데...
-
뿌에에에에에엥에ㅔ엥 3 1
https://orbi.kr/00078276601/ 여러분 모두 현역 4덮 인문계...
-
열등감은어떻게해야함 11 2
나는그냥열등감덩어리임
-
같을거같은데
-
내신 0 0
2-1 내신 망하면 답 없나요?
-
더프 보정컷이 1 0
"현시점"지금 이걸로 수험생 다 모아서 시험쳤을 때 컷이란 소리지?
-
AI 반란 이런게 0 0
헛소리가 아닐수도 https://www.instagram.com/reel/DXLym0BklqJ/
-
열등감의의인화임

이...이게뭐노...

농담으로 받아주시는 것이에요...
이해하면서 보려했는데 역시..!오늘 컴공일기도 잘 봤습니다 ㅎㅎ
저 혹시 어제 댓 봐주실 수 있나요..?
댓글을 사실 어제 봤었는데 갑자기 밤에 책도 읽고 계획도 정리하고 멀티태스킹이 되느라 까먹었네용... 미안해용 ㅠㅠㅠㅠ
이 예제 같은 경우는 아무래도 전반적으로 C++ 기초 문법을 알아야 해용 .... ㅎㅎ 원리 정도만 가볍게 그렇구나만 아셔도 될 거예요..~
역시 기본이 있어야하는 부분이군요!
그래도 컴공은 어떤 것을 배우는지 알 수 있는
기회가 없어서 잘 몰랐는데 컴공주님 덕에 어떤
것을 배우는지 알게 되어서 영광이에요 ㅎㅎ
그리고 저는 답글 봐주시는 것만으로도 감사합니다..!