2021-04-20 c++ 상속

2021. 4. 20. 12:53카테고리 없음

#define _CRT_SECURE_NO_WARNINGS
#include
#include

class Animal { //상속해주는 클래스의 멤버 변수 함수를 회부에서도 활용할 수 있다.
public:
int legs;
char name[50];

Animal(int legs, const char* name) {
    printf("동물 생성자 실행\n");
    this->legs = legs; //=>this는 위에 클래스에서 생성된 legs를 가리키고 legs는 지금 받는 파라미터 legs
    strcpy(this->name, name);
}

void printAnimalInfo() {
    printf("다리의 갯수 : %d\n", legs);
    printf("이름 : %s\n", name);
}

};
class Person : public Animal{ // Person은 Animal의 상속을 받는다.
public:
char regist_no[30];
Person(const char* regist_no) : Animal(2, "사람"){ //생성자를 한번 더 넣어주는 역할을 한다. 안되면 Person( int legs, const char* name )로 해주면 된다.

    printf("사람 생성자 실행\n");
    printf("주민번호 : %s\n", regist_no);

    /* legs = 2;
    strcpy(name, "사람");
    위에서 넣어줬으므로 아래에서 안넣어줘도 됨 */
}

};

int main() { //상속은 정적인 클래스보다 동적인 클래스에서 더 많이 사용한다.
Person *p=new Person("1234-9999");
p->printAnimalInfo(); // 부모클래스부터 갔다가 자식클래스로 넘어간다. 따라서 부모클래스에 있던 내용이 자식클래스 내용으로 덮어쓰기 된다.

return 0;

}

728x90