공부 중 메모/수업 예제 (KGCA)

Cpp 상속 예제

라이피 (Lypi) 2018. 7. 14. 23:52
반응형

출처 : KGCA 게임 아카데미(http://www.kgcaschool.com/). 수업 예제 파일.


parents.h

#pragma once
#include <iostream>
using std::cout;
using std::endl;


class parents
{
private:
	int money;

public:
	void Character();   //성품 출력
	void Appearance();  //외모 출력
	void Wealth();      //재산 출력

	parents();          //생성자
	parents(int money); //생성자
	virtual ~parents(); //소멸자
};



parents.cpp

 #include "parents.h"

void parents::Character()
{
	cout << "차분한 성품" << endl;
}
void parents::Appearance()
{
	cout << "잘생긴 외모" << endl;
}
void parents::Wealth()
{
	cout << "재산 : " << money << "원" << endl;
}
parents::parents()
{
	money = 1000000000; //10억
	cout << "--------parent 생성자" << endl;
}

parents::parents(int money)
{
	this->money = money;
	cout << "--------parent 생성자" << endl;
}

parents::~parents()
{
	cout << "--------parent 소멸자" << endl;
}

child.h

 #pragma once
#include "parents.h"

class child :public parents
{
public:
	void Humanity();	//추가된 멤버함수
	void Character();	//수정된 멤버함수
	void Apperance();	//확장된 멤버함수

	child();
	~child();
};

child.cpp

 #include "child.h"

void child::Humanity()
{
	cout << "넘치는 인간미" << endl;
}

void child::Character()
{
	cout << "불 같은 성품" << endl;
}
void child::Apperance()
{
	parents::Appearance();		  //기반 클래스에서 정의한 기능
	cout << "훤칠한 키" << endl;  //파생 클래스에서 확장된 기능
}

//child::child()
//{
//	cout << "child 생성자" << endl;
//}

child::child() : parents(1000)
{
	cout << "--------child 생성자" << endl;
}

child::~child()
{
	cout << "--------child 소멸자" << endl;
}

main.cpp

#include "child.h"
int main(void)
{
	parents pMan;
	pMan.Character();
	pMan.Appearance();
	pMan.Wealth();

	child aBoy;
	aBoy.Character();		// Parent에서 상속 받은 함수 호출
	aBoy.Appearance();	// Parent에서 상속 받은 함수 호출
	aBoy.Wealth();		// Parent에서 상속 받은 함수 호출
	aBoy.Humanity();		// Child에서 추가된 함수 호출
	return 0;
}



반응형