컴공 일기 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를 선물하세요.
-
국어도 수학도…ㅜㅜ
-
국수영탐 다 나한테 맞게 나와서 나한테만 물이었으면 좋겠다
-
이거 30문제맞음? 30문제4500원이면 남는게없을텐데
-
해주세여 제가 사랑하는 강사님들 -김기현 오지훈 박지향 안맞았던 강사님들-백호 김동욱
-
ㅠ_ㅠ 삼수를 해서라도 고려대 가야할 것 같다..
-
난이도가 너무 물이라 에바같다고 생갇
-
수학 중상위권이라 그런지 불보다 물이 나음ㅋㅋㅋ 멘탈 영향도 엄청 받아서 멘탈...
-
걍 풀세트로 뽑아서 다시 풀까 아님 걍 아수라에 있는걸로만 할까 어카지 9평칠때...
-
남은 8주는 0
내 인생을 바꾸고 컴플렉스를 극복할 마지막 기회 독하게 하자
-
4규 구독이 있네요 n제 주고 질답 시스템인 거 같은데데써보신 분 계신가요? 아니...
-
안녕하세요. 생기부 관련해서 질문 드립니다. 혹시 미래와 관련된 책을 읽고 기술...
-
공부안한지 2
약 80일째 진짜 글자 한자도 안읽음
-
지하철 등교를 시켜다오
-
9덮 언제임? 2
걍 8월꺼 스킵할까
-
근데 진짜 0
수능날만 되면 약속이라도 한듯이 망하는데 이유가 뭘까
-
3모 5-> 6모 4->9평 3 으로 올렸는데 이게 내실력으로 올린건지 긴가민가함...
-
둘중에 뭐 사는게 이득이에여?
-
맨뒷자리에서 자습하고너있었는데 거기까지 따라와서 뒤에서 5분동안 쳐다보고 가는 선생 어떻게하나요?
-
오지훈 step4 + 박선 n제 (300)질문있습니다ㅜㅜ 0
지금 오지훈 step4 실전문제 풀고있는데 오지훈 실전문제는 조금 난이도 있는...
-
저번주부터 공부 진짜 망한듯 내일부터 빡세게 달려야지..
-
국어 5번 틀린거 다시 생각해도 어이없음(내 실력에) 그전엔 중의적으로 해석될 수...
-
커피한잔 사먹을게요 감사합니다
-
이런거는 대부분 현장감문제임 수능에서두번당해보고느낌
-
후임 치킨 사준다고 하고 자연스럽게 주문했네요 코톳토는 출타용 가방에 달고 다녀야겠어요
-
6모 43323이었고 9모는 원점수로 94(언매) 74(미적) 89 48(정법사문)...
-
하.. 제 글 두개 같이 보면 남혐 컨셉의 여자 같아보일 수 있을 것 같긴한데 절대...
-
문담피 여자 극혐임?? 35
학벌 좋아도...???? 고딩때 정신 나갔을 때 팔에 타투 새긴 게 몇개 좀 있는데...
-
그리고 왜 그 사람이 제일 인기 많음??
-
등급컷뜨곤 행복했음 23은 완전 그 반대 24는 솔직히 체감보다 컷이 후하게 나온것...
-
서바시즌 계속 다니면서 항상 72 76 왔다갔다했는데 9모 72 나온 이후로 수학이...
-
난 치킨 등갈비 삼겹살 양념게장 부대찌개 샤인머스캣 등등등
-
기체 용해도가 온도에 반비례하니까 표층보다 심해에서 더 많은거 아닝가
-
빡모 1-3 0
84 (15 21 22 30) 사설론 첨으로 80 넘었다
-
근데 아싸라 쓸일은 없을듯
-
수험생은 나혼자인가
-
경제 수완 컷 0
열심히했으니 30분 오르비해야지
-
이 문제 ㅁ에 대한 설명 중에, 본문의 ’이 토론회‘에서 ’이‘와 ’이와 함께‘에서...
-
23수능이 진짜 불합리한게 31111=경희의 12111=연고 교차 턱걸이임
-
수술하고옴 1
원래 오늘은 쉬려했는데 걍 이제 다시 공부해야지....
-
지금 기출공부하는 동시에 엡 스키마 풀고 있는데 한 지문 당 한 문제씩 틀립니다...
-
갑자기 궁금하네
-
24는 며칠 후까지 ㅈ망러 대다수랑 일부 물로켓론자들끼리 개싸움 벌임
-
22국어? 0
첫수능이었는데 그해 6월부터 공부시작한 씹노베였어서 그냥 개털림 ㅇㅇ 어려움도...
-
1컷을 80대로 내는 행위가 가능하다고 19는,,,,ㅋㅋ 18에 지진 맞고 19에 불국어 먹고,,,
-
개인적으로 23수능이 더 현장체감 빡셌던거같음
-
[속보] 대통령실 “내년 의대 정원 조정 불가능…2026학년도 이후 열린 마음으로 논의” 5
[속보] 대통령실 “내년 의대 정원 조정 불가능…2026학년도 이후 열린 마음으로...
-
모래주머니 효과 있긴한듯 22 수능 국어 기출 풀어보고 망했다 싶었다가 딱 국어...
-
밖에서 혼자 할거 ㅊㅊ좀요
이...이게뭐노...
오늘 컴공일기도 잘 봤습니다 ㅎㅎ
저 혹시 어제 댓 봐주실 수 있나요..?
댓글을 사실 어제 봤었는데 갑자기 밤에 책도 읽고 계획도 정리하고 멀티태스킹이 되느라 까먹었네용... 미안해용 ㅠㅠㅠㅠ
이 예제 같은 경우는 아무래도 전반적으로 C++ 기초 문법을 알아야 해용 .... ㅎㅎ 원리 정도만 가볍게 그렇구나만 아셔도 될 거예요..~
역시 기본이 있어야하는 부분이군요!
그래도 컴공은 어떤 것을 배우는지 알 수 있는
기회가 없어서 잘 몰랐는데 컴공주님 덕에 어떤
것을 배우는지 알게 되어서 영광이에요 ㅎㅎ
그리고 저는 답글 봐주시는 것만으로도 감사합니다..!