#include <iostream>
using namespace std;
class Person
{
private:
int age;
char name[50];
public:
Person(int myage, char* myname) : age(myage)
{
strcpy(name, myname);
}
void WhatYourName() const
{
cout << "My name is " << name << endl;
}
void HowOldAreYou() const
{
cout << "I'm" << age << " years old" << endl;
}
};
class UnivStudent : public Person
{
private:
char major[50];
public:
UnivStudent(char* myname, int myage, char* mymajor)
: Person(myage, myname)
{
strcpy(major, mymajor);
}
void WhoAreYou() const
{
WhatYourName();
HowOldAreYou();
cout << "My major is " << major << endl << endl;
}
};
UnivStudent(char myname, int myage, char mymajor)
: Person(myage, myname)
{
strcpy(major, mymajor);
}
유도 클래스의 생성자에서 기초 클래스의 생성자 호출을 명시하지 않으면, 기초 클래스의 void 생성자가 호출된다.
1. public 상속
접근 제어 권한을 그대로 상속한다!
단, private은 접근불가로 상속한다!
2. protected 상속
protected보다 접근의 범위가 넓은 멤버는 protected로 상속한다.
단, private은 접근불가로 상속한다!
3. private 상속
private보다 접근의 범위가 넓은 멤버는 private로 상속한다.
단, private은 접근불가로 상속한다!