본문 바로가기

Studies/C++ Espresso

Chapter 8 LAB solution


p.339의 상속관련 예제입니다. 

● human.h

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

#ifndef HUMAN_H
#define HUMAN_H

class Human
{
	protected:
		string name;
		int age;

	public:
		Human();
		Human(string name, int age);
		~Human();
		void setName(string v_name);
		string getName(void);
		void setAge(int v_age);
		int getAge(void);
		void print(void);
};

#endif

● human.cpp
#include "human.h"

Human::Human()
{
	/* Default constructor */
	cout << "Human default constructor" << "\n";
}

Human::Human(string name, int age)
{
	setName(name);
	setAge(age);	

	cout << "Human second constructor" << "\n";
}

Human::~Human()
{
	/* Do nothing */  
	cout << "Human default destructor" << "\n";
}

void Human::setName(string v_name)
{
	name = v_name;
	return;
}

string Human::getName()
{
	return name;
}

void Human::setAge(int v_age)
{
	age = v_age;
	return;
}

int Human::getAge()
{
	return age;
}

void Human::print(void)
{
	cout << "Name : " << name << "\tAge : " << age << "\n";

	return;
}

● student.h
#ifndef HUMAN_H
#include "human.h"
#endif

#ifndef STUDENT_H
#define STUDENT_H

class Student : public Human
{
	protected:
		string major;

	public:
		Student();
		Student(string name, int age, string major);
		~Student();
		void setMajor(string v_major);
		string getMajor(void);
		void print(void);
};
#endif


● student.cpp
#include "student.h"

Student::Student()
{
	/* default constructor */
	cout << "Student default constructor" << "\n";
}

Student::Student(string name, int age, string major)
{
	setName(name);
	setAge(age);
	setMajor(major);

	cout << "Student second constructor" << "\n";
}

Student::~Student()
{
	/* Do nothing */
	cout << "Student default destructor" << "\n";
}

void Student::setMajor(string v_major)
{
	major = v_major;
}

string Student::getMajor(void)
{
	return major;
}

void Student::print(void)
{
	cout << "Name : " << name << "\tAge : " << age << "\tMajor : " << major << "\n";

	return;
}

● main.cpp
#include <iostream>
#include <string>
using namespace std;

#include "human.h"
#include "student.h"

int main()
{
	Human a("춘향", 18);
	Human b("몽룡", 21);
	Human c("사또", 50);

	a.print();
	b.print();
	c.print();

	Student d("명진", 21, "컴퓨터");
	Student e("미현", 22, "경영");
	Student f("용준", 24, "전자");

	d.print();
	e.print();
	f.print();

	return 0;
}
※ 뭐 질문이 없어서, 그냥 손에 잡히는데로 하렵니다.    그나저나 구글의 소스 플러그인은 정말 보기가 좋네요.