C++

13주차 예습과제

wlsn 2024. 11. 26. 01:33

강의 주제 : 바인딩과 오버로딩vs오버라이딩

 

강의 키워드(주요 단어) : 바인딩, 오버로딩, 오버라이딩, 정적(static)멤버변수, 가상함수, 순수가상함수

 

주요 내용 요약

 

가상함수(overriding)의 필요성, (최우선의 라는 뜻도 가지고 있다.)

클래스를 상속 받아서 쓰는데, 상속 받은 클래스의 함수 중 고치고 싶은 함수가 있을 때

기존 클래스의 모든 내용을 모두 현재 프로그램에 사용할 수 있는데, 특정 함수가 마음에 들지 않음

기존의 클래스를 고치느니 상속을 받고, 가상함수를 이용하여 기존의 함수를 고쳐서 사용

상속 받은 함수(부모)를 실행하지 않고 자신(자식)의 함수를 실행

가상함수의 구현을 중복(overriding)이라고 함

 

바인딩(binding)

- 변수와 함수에 대한 메모리 할당이나 함수 호출이 발생했을 때 실제로 처리해야하는 명령어들이 결정되는 시점

- 정적(static) 바인딩, early

└ 컴파일 시 변수의 위치와 함수가 실행할 명령이 결정되는 경우

└ static 변수, overloading

- 동적(dynamic) 바인딩, late

└ 실제 실행할 때(run time) 결정되는 경우

└ 지역변수, overriding

 

C++과 C에서 auto는 원래 같은 문법이였지만 C++11에서  auto는 기억클래스 지정자가 아닌 동적으로 타입을 정하게 바뀌었다.(stl 사용시 코드가 짧고 가독성이 좋아짐)

 

정적(static) 멤버변수

- 모든 객체가 공유하는 멤버변수

- 한 클래스로부터 객체가 여러개 만들어지더라도 멤버변수당 하나씩 생성됨

- 여러 객체들에서 공유해야하는 정보는 멤버변수로 선언함

 

cast연산자

- static_cast

- dynamic_cast : 안전한 downcasting (왠만해서는 잘 쓰이지 않음)

  └ 부모 클래스의 포인터에서 자식 클래스의 포인터로 다운 캐스팅

- const_cast

- reinterpret_cast

- C/C++ cast 연산자

└ (type)(expression)

└ (double)x;

- C++ cast 연산자

└ 연산자<type>(expression)

└ static_cast<double>(x);

 

기본 클래스(base)

            ↑ : upcasting(문제x)

            ↓ : down casting

파생 클래스(Derived)

 

가상함수(virtual function)

- 오버라이딩을 구현하는 방법

- 동적(실행시) 바인딩, late binding

- 가상함수를 정의하기 위해서는 기본 클래스의 멤버함수 앞에 'virtual'이라는 키워드를 씀

- 가상함수는 하나의 이름(인터페이스)으로 여러 개의 수단과 방법을 제공하는 객체지향 프로그래밍의 다형성을 구현하는 한 방법

- 기본 클래스에서 상속 받았는데 파생 클래스에서 멤버함수를 재정의하는 이유는 어떠한 경우라도 기본클래스의 멤버함수를 버리고 파생 클래스의 멤버함수를 사용하려는 것

- 기존 클래스의 모든 내용을 모두 현재 프로그램에 사용할 수 있는데 특정 함수가 걸맞지 않을 경우, 기존의 클래스를 고치느니 상속을 받고 가상함수를 이용하여 마음에 들지 않는 함수만 고쳐서 사용함

 

순수가상함수(pure virtual function)

- 파생클래스에서 반드시 재정의를 해야함

- 순수가상함수를 갖는 클래스는 "추상클래스"라고 부름

- 추상클래스는 객체생성이 안된다.

 

 

감상 평

새로운 가상함수, overloading vs overriding의 개념을 배울 수 있어 재밌었다.

 

강의 이해도

75%

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

14주차 예습과제  (0) 2024.12.03
13주차 강의 내용  (0) 2024.11.26
12주차 강의내용  (0) 2024.11.19
12주차 예습과제  (0) 2024.11.18
11주차 강의 내용  (0) 2024.11.12