ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ 상속
    C++ 2025. 3. 30. 23:36

    먼저 상속이란 기존의 클래스에 새로운 기능을 추가할 수 있다.

    또한 클래스가 나타내고 있는 데이터에 다른 것을 더 추가할 수 있다.

    클래스 메서드가 동작하는 방식을 변경할 수 있다.

    오리지널 클래스를 기초 클래스, 상속받는 클래스를 파생 클래스라 한다.

    나는 예제로 Time을 기초 클래스로 할 것이다.

    class NewTime : public Time {
    
    };
    
    // Time이란 클래스를 오리지널 클래스로하여 NewTime 클래스를 만들었다.

     

    1. 파생 클래스형의 객체 안에는 기초 클래스형의 데이터 멤버들이 저장된다.

    2. 파생 클래스형의 객체는 기초 클래스형의 메서드들을 사용할 수 있다.

    3. 파생 클래스는 자기 자신의 생성자를 필요로 한다.

    4. 파생 클래스는 부가적인 데이터 멤버들과 멤버 함수들을 임의로 추가할 수 있다.

     

    class NewTime : public Time {
    private:
    	int day;
    public:
    	NewTime();
    	NewTime(int, int, int);
    };
    #endif

    파생클래스인 NewTime에서 디폴트생성자와 매개변수가 있는 생성자를 선언했다.

    정의할때는 NewTime 멤버인 day와 Time 클래스 멤버인 hours, mins를 갖게 된다.

    단, 여기서도 addHours나 addMins같은 public 함수에는 접근할 수 있지만, private에있는 hours, mins에는 직접적으로 접근하지못한다. 이를 해결하기위해 파생클래스의 객체에 들어가기전에 기초 클래스의 객체가 먼저 생성되어야 한다.

    NewTime::NewTime() : Time() {
    	day = 0;
    }
    
    NewTime::NewTime(int h, int m, int d) : Time(h,m){
    	day = d;
    }
    
    void NewTime::print() {
    	std::cout << "일 : " << day << std::endl;
    	show();
    }

    기존 hours와 mins는 0으로 초기화되어있기때문에 나는 day만 0으로 초기화해주었다.

    h와 m은 파생클래스것을 기초클래스가 받아서 설정되어있기때문에 day만 초기화해주면된다.

    위와 같이 출력되었다.

    'C++' 카테고리의 다른 글

    C++ public 다형 상속  (0) 2025.03.31
    C++ 연산자 오버로딩  (0) 2025.03.29
    C++ 생성자와 소멸자  (0) 2025.03.29
    C++ 추상화와 클래스  (1) 2025.03.28
    C++ 분할 컴파일  (0) 2025.03.27
Designed by Tistory.