Programming Language/C++(73)
-
Part2::Ch 03. 상속 - 06. 다중 상속
다중 상속도 이전에 배웠던 private, protected 상속과 같이 조심해서 사용해야하는 상속 중 하나이다. 먼저 부모 클래스가 될 클래스를 두개 정의해보자.그리고 이걸 상속 받을 자식 클래스를 만들어주고이제 두 부모 클래스를 한번에 상속 해주자. 한번에 상속하는 방법은 그냥 ,(쉼표)를 기준으로 두개의 부모클래스를 작성해주면 된다. 이렇게 되면 두 부모의 모든걸 받아오게 될 것이다. 그럴때 한번 몇가지 확인해볼 것이 있는데 먼저 두개의 부모가 서로 같은 명칭의 멤버를 가지는 경우이다.이 경우에는 서로 부모가 이름을 가리게 된다. 이전에는 상속받은 자식이 부모의 이름을 가리는 경우였는데 이번엔 부모끼리 이름을 가리는 경우가 생기는 것이다.이렇게 되면 사용 할때 이렇게 모호하다고 알려준다.어떤걸 써야..
2025.05.10 -
Part2::Ch 03. 상속 - 05. private, protected 상속
먼저 private와 protected 상속은 사용하는데가 많지 않기에 사용할때에는 많은 고민을 하고 사용하는것이 좋다. 먼저 사용 예제를 보기전에 관계에 대해서 알아보자.객체들 간의 관계를 말할때 기본적으로 is-a 관계와 has-a 관계가 있다.이 관계는 클래스 설계 시 상속(inheritance)과 포함(composition)을 어떻게 사용할지를 판단하는 객체 간의 관계 모델링 개념이다 1. is-a 관계 (상속, inheritance) A는 B이다. → A is a B 로 상속 관계로 표현된다.그 의미는 자식 클래스가 부모 클래스의 일종이다라는 관계로 공통 동작을 물려받기 위해 사용한다.class Animal {public: void breathe() {}};class Dog : public..
2025.05.10 -
Part2::Ch 03. 상속 - 04. 추상 클래스, 순수 가상 함수
1. 추상클래스(Abstract Class) 추상 클래스(Abstract Class)란 하나 이상의 순수 가상 함수(pure virtual function)를 포함하는 클래스로 직접 객체를 생성할 수 없는 클래스다.주로 공통 인터페이스를 정의하고 이를 상속받는 하위 클래스가 구체적인 동작을 구현하도록 강제하기 위해 사용한다 2. 순수 가상함수(pure virtual function) 순수 가상 함수(pure virtual function)란 자식 클래스에서 반드시 재정의(override)해야 하는 가상 함수로 구현 없이 선언만 되어 있는 함수이다.순수 가상함수는 함수의 본체(body)가 없고, = 0으로 표시된다 1) 순수 가상함수의 문법virtual 반환형 함수이름(매개변수) = 0;=========..
2025.05.04 -
Part2::Ch 03. 상속 - 03. 정적 결합, 동적 결합
1. 정적 결합(Static Binding)정적이라는 부분은 대부분 컴파일 타입이라는 개념이랑 연결되는 경우가 많다.정적 결합은 컴파일 타임(compile-time)에 함수 호출이나 멤버 접근이 어떤 코드와 연결될지 확정되는 방식으로 컴파일러가 함수 호출 대상을 미리 안다라는 개념하에 발생한 결합니다.이는 실행 도중(런타임)이 아니라, 컴파일 단계에서 어떤 함수나 멤버가 호출될지 결정되며 대표적으로는 오버로딩이 정적 결합이며 추가로 대부분의 일반 함수 호출, 연산자 오버로딩, 템플릿 등은 정적 결합이다. 2. 정적 결합을 코드로상속관계에 있는 클래스를 두개 선언해주고부모 클래스에 멤버 변수를 하나 선언해주고간단한 연산자 오버로딩 함수, 전역함수로 반환 타입이 Parent이고 매개변수를 const Pare..
2025.05.04 -
Part2::Ch 03. 상속 - 02. 가상 함수
1. 가상 함수란부모 클래스에서 정의한 함수가, 자식 클래스에서 재정의(override) 될 수 있도록 하는 함수로 virtual 이라는 키워드를 사용해서 생성한다. 먼저 부모 자식 클래스를 한번 생성해주자. 먼저 부모와 자식에 동일한 함수를 생성했을 때 메인 함수에서 각각의 객체를 생성해서 각각의 func를 호출해보면각각의 함수를 호출하는 것을 알 수 있는데 이번엔 업케스팅을 한번 해보고 나서 func 함수를 호출하도록 해보면부모 클래스의 func 함수를 호출하는 것을 알 수 있다. 원래 업케스팅을 한 이유는 부모 객체를 사용해서 자식 객체의 기능을 사용하는 기 위함인데 업케스팅을 했는데도 불구하고 부모 객체의 함수를 호출하는 것은 바라는가 아니다. 이런 상황에서 사용하는 것이 virtual 이라는 키..
2025.05.04 -
Part2::Ch 03. 상속 - 01. 상속의 기본
1. 상속이란기존 클래스(부모 클래스, 기본 클래스)의 속성(멤버 변수)와 기능(멤버 함수)을 새로운 클래스(자식 클래스, 파생 클래스)가 물려받아 사용할 수 있게 하는 객체지향 프로그래밍(OOP)의 핵심 개념 중 하나이다. 2. 상속의 기본 방법상속의 기본적인 문법은 class 부모클래스 {public: void hello() { std::cout 와 같이 부모 클래스의 이름을 자식 클래스의 우측에 : 연산자를 사용해서 public 키워드와 함께 작성해주면 상속이 된다. 3. 상속의 종류(접근 지정자를 기준으로 해서)상속은 접근 지정자를 기준으로 하여 3가지로 나뉠 수 있다.class 자식 : public 부모 {}; // public 상속 → 부모의 public은 자식에서도 p..
2025.05.04