다형성-다형성이란?

2022. 8. 12. 16:49·C++ 프로그래밍/클래스

개인적으로다형성이란 객체지향의 꽃이라고 할 수도 있다고 생각합니다.

상속을 완벽하게 하기 위해 다형성을 사용해야하니까요.


다형성(Polymorphism)이란 프로그래밍에서는 다양한 종류의 객체에게 동일한 메시지를 보내더라도 각 객체들이 서로 다르게 동작을 하는 특성을 말합니다.

예를 들어, 동일한 이름의 함수를 호출하더라도 매개변수에 따라 다른 함수가 실행되는 함수 중복(Function Overloading => 보통 오버로딩이라고 부름)도 다형성의 일종입니다.

상속 관계에서 함수 재정의(Function Overriding => 보통 오버라이딩이라고 부름)의도 다형성을 보여주는데,

함수의 이름과 매개변수가 같더라도 메시지를 보내는 객체의 타입에 따라 다른 동작이 가능하도록 허용합니다.

이러한 다형성은 매우 매우 중요합니다.

교수님이 그림판으로 척척 그림을 그리시는게 신기해서 나도 한번 그려본 다형성 분류

 

  • 함수 중복은 동일한 이름의 함수라도 인수의 개수와 자료형에 따라 여러 가지 함수가 실행될 수 있습니다.
    함수 중복은 소스 코드를 컴파일 하는 과정에 실제로 어떤 함수가 실행되어야 할지를 알 수 있어,
    그 함수를 연결해주기 때문에 컴파일 시간 다형성이라 불리며, 정적 다형성(static binding)을 사용합니다.

 

  • 연산자 중복은 동일한 연산자를 다양한 용도로 사용하는 방법을 제공하며,
    컴파일 시간 다형성이라 불리며, 정적 다형성을 사용합니다.

 

  • 클래스가 객체를 만드는 틀이라면 템플릿은 클래스를 만드는 틀입니다.
    템플릿은 타입 매개변수에 따라 새로운 클래스를 만드는 방법을 제공하고,
    따라서 파라메터형 다형성이라고 합니다.
    템플릿도 컴파일 시간 다형성이라 불리며, 정적 다형성을 사용합니다.

 

  • 이상의 방법들은 모두 컴파일 과정에 실제로 호출될 함수가 결정되는 컴파일 시간 다형성입니다.
    객체지향 언어인 C++에서는 실행시간(runtime) 다형성을 제공합니다.
    이 것은 가상 함수(virtual function)를 통한 동적 바인딩(dynamic binding)을 이용하는 기법입니다.
    이 방법의 특징은 컴파일 시에 실제로 어떤 함수가 실행되어야 할지 결정할 수가 없다는 것입니다.
    따라서 실행 시에 결정할 수밖에 없습니다.

 

 

저작자표시 비영리 변경금지 (새창열림)

'C++ 프로그래밍 > 클래스' 카테고리의 다른 글

다형성-가상 함수와 객체의 크기  (0) 2022.08.22
다형성-가상 함수와 동적 바인딩의 의미  (0) 2022.08.12
다형성-상속에서의 형 변환  (0) 2022.08.12
상속  (0) 2022.08.08
.과 ->의 쓰는 용도  (0) 2022.08.04
'C++ 프로그래밍/클래스' 카테고리의 다른 글
  • 다형성-가상 함수와 객체의 크기
  • 다형성-가상 함수와 동적 바인딩의 의미
  • 다형성-상속에서의 형 변환
  • 상속
같은편
같은편
책을 통해 이때까지 블로그나 유튜브에서 얻었던 지식의 파편들을 정립하고 합쳐 단단한 발판으로 만들기 위한 블로그
  • 같은편
    홍익대 게임소프트웨어전공의 프로그래밍 단련 공간
    같은편
  • 전체
    오늘
    어제
    • 분류 전체보기 (87) N
      • 게임 프로그래밍 패턴 (2)
      • C# 프로그래밍 (26)
      • C++ 프로그래밍 (32)
        • 함수 (8)
        • 클래스 (22)
      • 알고리즘 공부 (15) N
        • 백준 사이트 문제(C++) (2) N
        • codingame 사이트 문제(C#) (11)
      • 유니티엔진 - 게임 공부 (3)
      • 언리얼엔진 - 게임 공부 (4)
      • 쓸모 있을 수 있는 팁 (2)
      • 일상이야기 (3)
  • 링크

    • 깃허브
  • 인기 글

  • 태그

    탐욕 알고리즘
    복사 생성자
    예외 처리
    클래스
    c++
    언리얼엔진
    최단 경로
    문제 풀이
    DFS
    알고리즘
    스레드
    언리얼엔진4
    C#
    비동기
    언리얼
    queue
    객체
    task
    람다식
    함수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
같은편
다형성-다형성이란?
상단으로

티스토리툴바